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啊?请高手指教?#include <stdio.h> #include <stdlib.h> #define MAX_VERTEX_NUM 100 struct ArcNode { int adjver; struct ArcNode *nextArc; }; struct Vnode { int data; struct ArcNode *firstarc; }; struct Graph { struct Vnode AdjList[MAX_VERTEX_NUM]; int vernum,arcnum; }; struct Graph G; int Visited[MAX_VERTEX_NUM],find; void CreateGraph(int x,int y) { int v1=x, v2=y,j; struct ArcNode *p; p=(struct ArcNode *)malloc(sizeof(struct ArcNode)); p->adjver=y-1; j=x-1; p->nextArc=G.AdjList[j].firstarc; G.AdjList[j].firstarc=p; p=(struct ArcNode *)malloc(sizeof(struct ArcNode)); p->adjver=x-1; j=y-1; p->nextArc=G.AdjList[j].firstarc; G.AdjList[j].firstarc=p; } void DFS(int x,int y,int k) { struct ArcNode *temp; int w; Visited[x] = 1; if(y==x+1) { if(k==1)printf("In the same gang.\n"); if(k==-1)printf("In different gangs.\n"); find=1; return; } for(temp = G.AdjList[x].firstarc; temp != NULL; temp = temp->nextArc) { w = temp->adjver; if(!Visited[w]) { DFS(w,y,k*(-1)); } } } int main() { int k,m,i,x,y; char ch; scanf("%d",&k); while(k--) { scanf("%d %d",&G.vernum,&m); getchar(); for(i=0;i<G.vernum;i++) { G.AdjList[i].data=i+1; G.AdjList[i].firstarc=NULL; } while(m--) { scanf("%c %d %d",&ch,&x,&y); getchar(); switch(ch) { case 'D':CreateGraph(x,y);break; case 'A':find=0; for(i=0;i<G.vernum;i++)Visited[i]=0; DFS(x-1,y,1); if(!find)printf("Not sure yet.\n"); break; } } } return 0; } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator