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 |
为什么WA????#include <stdio.h> #include <string.h> struct CIRCLE { int linenum; int line[150]; int color; int linecolor[150]; }; struct STATE { int p1,p2; }; STATE queue[15000]; CIRCLE circle[150]; int N,L,K,Q,M; int rear,front; bool used[150][150]; int i,j,k,c; int count; int prerear; int now1,now2; bool OK; int main() { //freopen("1.txt","r",stdin); scanf("%d%d%d%d",&N,&L,&K,&Q); for(i=1;i<=N;i++) { scanf("%d",&circle[i].color); circle[i].linenum=0; } scanf("%d",&M); for(i=0;i<M;i++) { scanf("%d%d%d",&j,&k,&c); circle[j].line[circle[j].linenum]=k; circle[j].linecolor[circle[j].linenum]=c; circle[j].linenum++; } front=rear=0; prerear=0; count=1; queue[front].p1=L; queue[front].p2=K; memset(used,0,sizeof(used)); OK=0; while(front<=rear) { if(front>prerear) { prerear=rear; count++; } now1=queue[front].p1; now2=queue[front].p2; for(i=0;i<circle[now1].linenum;i++)//pawn1 is procceed first { j=circle[now1].line[i]; if(circle[now2].color==circle[now1].linecolor[i] && used[j][now2]==0 && now2 != j) { rear++; queue[rear].p1=j; queue[rear].p2=now2; used[j][now2]=true; if(now2==Q || j==Q) { OK=1; goto END; } } } for(i=0;i<circle[now2].linenum;i++)//pawn2 is procceed second { j=circle[now2].line[i]; if(circle[now1].color==circle[now2].linecolor[i] && used[now1][j]==0 && now1 != j) { rear++; queue[rear].p2=j; queue[rear].p1=now1; used[now1][j]=true; if(now1==Q || j==Q) { OK=1; goto END; } } } front++; } END: if(OK==0) printf("NO\n"); else printf("YES\n%d\n",count); return 0; } Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator