HDOJ(2150) 小弟我的哪错了?C++提交的。跪求代码!

HDOJ(2150) 我的哪错了?C++提交的。跪求代码!!!
#include <iostream>
#include <algorithm>
#include <cstdio>
#include <vector>
using namespace std;

struct Node
{
    int x,y;
    Node operator-(Node &node)
    {
        Node new_node;
        new_node.x=x-node.x;
        new_node.y=y-node.y;
        return new_node;
    }
};
vector<vector<Node> > L;
double cross(Node vec1,Node vec2)
{
    return (double)vec1.x*vec2.y-(double)vec1.y*vec2.x;
}
bool straddle(Node n1,Node n2,Node n3,Node n4)
{
    Node vec1=n2-n1;
    Node vec2=n3-n2;
    Node vec3=n4-n2;
    if(cross(vec1,vec2)*cross(vec1,vec3)<=0)
        return true;
    else
        return false;
}
double special_straddle(Node n1,Node n2,Node n3,Node n4)
{
    Node vec1=n2-n1;
    Node vec2=n3-n2;
    Node vec3=n4-n2;
    return cross(vec1,vec2)*cross(vec1,vec3);
}
bool intersect(vector<vector<Node> > L)
{
    int len=L.size();
    for(int i=0;i<len-1;i++)
    {
        for(int m=0;m<L[i].size()-1;m++)
        {
            for(int j=i+1;j<len;j++)
            {
                for(int n=0;n<L[j].size()-1;n++)
                {
                    if((m==0&&cross(L[j][n]-L[i][m],L[j][n]-L[j][n+1])==0)||
                       (m==L[i].size()-2&&cross(L[j][n]-L[i][m+1],L[j][n]-L[j][n+1])==0)||
                       (n==0&&cross(L[i][m]-L[j][n],L[i][m]-L[i][m+1])==0)||
                       (n==L[i].size()-2&&cross(L[i][m]-L[j][n+1],L[i][m]-L[i][m+1])==0))
                        continue;
                    

                    if(straddle(L[i][m],L[i][m+1],L[j][n],L[j][n+1])&&
                        straddle(L[j][n],L[j][n+1],L[i][m],L[i][m+1]))
                        return true;
                }
            }
        }

    }
    return false;
}
int main()
{
    int num,n; //num为管道数,n为每条管道的端点数
    vector<Node> p;
    while(scanf("%d",&num)!=EOF)
    {
        L.clear();
        Node temp;
        for(int i=0;i<num;i++)
        {
            p.clear();
            cin>>n;
            for(int j=0;j<n;j++)
            {
                cin>>temp.x>>temp.y;
                p.push_back(temp);
            }
            L.push_back(p);
        }
        if(num<=1)
        {