| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
Re:为什么数据都过了还A不了啊,,,,纠结啊啊啊啊啊啊啊啊,,大婶(神)们请指正啊In Reply To:为什么数据都过了还A不了啊,,,,纠结啊啊啊啊啊啊啊啊,,大婶(神)们请指正啊 Posted by:2010030402005 at 2011-07-31 17:03:54 #include<iostream>
#include<cstdio>
#include<queue>
#include<cstring>
#define MAXN 2000
using namespace std;
struct ArcNode
{
int to;
struct ArcNode *next;
};
ArcNode* List[MAXN];
int visit[MAXN];
int num[MAXN];
int main()
{
int n,m;
int u,v;
int hehe;
int tt=1;
int aa;
scanf("%d%d",&n,&m);
hehe=m;
memset(List,0,sizeof(List));
memset(visit,0,sizeof(visit));
memset(num,0,sizeof(num));
ArcNode* temp;
for(int i=1;i<=n;i++)
{
scanf("%d%d",&u,&v);
temp=new ArcNode;
temp->to=v;
temp->next=NULL;
if(List[u]==NULL)
List[u]=temp;
else
{
temp->next=List[u];
List[u]=temp;
}
}
ArcNode* tt1;
queue<ArcNode *>q;
int sum[MAXN];
int lujin[MAXN];
int tem;
int biao;
biao=1;
temp=List[1];
visit[1]=-1;
sum[1]=1;
tem=1;
int i=1;
q.push(temp);
ArcNode* node;
int chakan;
node=q.front();
while(!q.empty())
{
q.pop();
while(node!=NULL)
{
if(visit[node->to]!=-1)
{
sum[node->to]=sum[tem]+1;
num[node->to]=biao;
biao=node->to;
q.push(node);
visit[node->to]=-1;
chakan=node->to;
}
node=node->next;
}
if(chakan==m)
{
tt=0;
printf("%d\n",sum[m]);
while(num[m])
{
lujin[i]=num[m];
m=num[m];
i++;
}
for(int j=i-1;j>=1;j--)
{
printf("%d\n",lujin[j]);
}
printf("%d\n",hehe);
break;
}
else
{
if(q.empty())
break;
node=q.front();
if(List[node->to]==NULL)
break;
tem=node->to;
biao=node->to;
node=List[node->to];
}
}
if(tt==1)
printf("-1\n");
return 0;
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator