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 <iostream> #include <algorithm> using namespace std; int path[2000]; int num; struct Edge { int p1,p2; bool visited; }edges[2000]; struct Vertex { int numOfEdges; int edges[50]; }vertexes[50]; void solve(int k,int edge) { int i; for (i=0;i<vertexes[k].numOfEdges;i++) { if(!edges[vertexes[k].edges[i]].visited) { int nextJunction=edges[vertexes[k].edges[i]].p1; if(k==nextJunction) nextJunction=edges[vertexes[k].edges[i]].p2; edges[vertexes[k].edges[i]].visited=true; solve(nextJunction,vertexes[k].edges[i]); } } path[num++]=edge; } int main() { int x,y,z,startJunction,exist; int i; while (1) { scanf("%d%d",&x,&y); if(x==0 && y==0) break; memset(vertexes,0,sizeof(vertexes)); memset(edges,0,sizeof(edges)); scanf("%d",&z); edges[z].p1=x; edges[z].p2=y; edges[z].visited=false; vertexes[x].edges[vertexes[x].numOfEdges++]=z; vertexes[y].edges[vertexes[y].numOfEdges++]=z; startJunction=x; if(x>y) startJunction=y; while (1) { scanf("%d%d",&x,&y); if(x==0 && y==0) break; scanf("%d",&z); edges[z].p1=x; edges[z].p2=y; edges[z].visited=false; vertexes[x].edges[vertexes[x].numOfEdges++]=z; vertexes[y].edges[vertexes[y].numOfEdges++]=z; } for (i=1;i<=50;i++) sort(vertexes[i].edges,vertexes[i].edges+vertexes[i].numOfEdges); exist=1; for (i=1;i<=50;i++) if(vertexes[i].numOfEdges%2!=0) { exist=0; break; } if(exist==0) { printf("Round trip does not exist.\n"); continue; } memset(path,-1,sizeof(path)); num=0; solve(startJunction,0); for (i=num-2;i>=0;i--) { printf("%d ",path[i]); } printf("\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