为什么 Runtime Error (ACCESS_VIOLATION) 大牛看一下呗解决方法

为什么 Runtime Error (ACCESS_VIOLATION) 大牛看一下呗
题目是 hdu 1054 :
代码:
C/C++ code

#include <iostream>
#include <cstring>
#include<cstdio>
#define N 1505
using namespace std;  //定义链表
struct link
{
   int data; //存放数据
   link* next; //指向下一个节点
   link(int=0);
};
link::link(int n)
{
   data=n;
   next=NULL;
}

int result[N]; //记录n1中的点匹配的点的编号
bool state [N]; //记录n1中的每个点是否被搜索过
link *head [N]; //记录n2中的点的邻接节点
link *last [N]; //邻接表的终止位置记录
//判断能否找到从节点n开始的增广路
bool find(const int n)
{
    link* t=head[n];
    while (t!=NULL) //n仍有未查找的邻接节点时
    {
       if (!(state[t->data])) //如果邻接点t->data未被查找过
       {
          state[t->data]=true; //标记t->data为已经被找过
          if ((result[t->data]==-1) || //如果t->data不属于前一个匹配M
          (find(result[t->data]))) //如果t->data匹配到的节点可以寻找到增广路
          {
           result[t->data]=n;  //那么可以更新匹配M',其中n1中的点t->data匹配n
           return true;  //返回匹配成功的标志
          }
       }
       t=t->next; //继续查找下一个n的邻接节点
     }
     return false;
}
int flag[N];
int main()
{
   int n,m;
   while(scanf("%d",&n)==1)
   {
     memset(flag,0,sizeof(flag));
     memset(result,-1,sizeof(result));
     for (int i=0; i < n; i++)
     {
     int t1=0, t2=0;
     scanf("%d:(%d)",&t1,&m);
     if(flag[t1]==0)
     {
     while(m--)
     {
       scanf("%d",&t2);
       flag[t2]=1;
       if (last[t1]==NULL)
       last[t1]=head[t1]=new link(t2);
       else
       last[t1]=last[t1]->next=new link(t2);
     }
     }

     else
     {
         while(m--)
         {
         scanf("%d",&t2);
         if (last[t1]==NULL)
         last[t2]=head[t2]=new link(t1);
         else
         last[t2]=last[t2]->next=new link(t1);
         }
     }

   }

   int ans=0;
   for (int i=0; i<n; i++)
   {
      memset(state, 0, sizeof(state));
      if (find(i)) ans++;
    }
    cout<<ans<<endl;
   }

    return 0;
}




------解决方案--------------------
没有细看代码,看错误知道是内存访问的事儿,楼主调试一下
scanf("%d:(%d)",&t1,&m); 楼主这个代码不太合适,不能让别人输入:还要输入()吧?
------解决方案--------------------
崩溃的时候在弹出的对话框按相应按钮进入调试,按Alt+7键查看Call Stack里面从上到下列出的对应从里层到外层的函数调用历史。双击某一行可将光标定位到此次调用的源代码或汇编指令处。

------解决方案--------------------
楼主输入的是什么
gcc4.2表示测试了一组数据没问题