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<malloc.h> #define N 101 #define M sizeof(struct ArcNode) typedef struct ArcNode{ int adjvex; struct ArcNode *next; }ArcNode,*node; typedef struct{ int data; ArcNode *firstadj; }AdjList[N]; typedef struct{ AdjList vertices; int vexnum; }AlGraph; int visited[N],find=0; int CreateAlG(AlGraph &G); int dfs(AlGraph,int start,int des); int main() { AlGraph G; int start,des,s; scanf("%d %d %d",&G.vexnum,&start,&des); CreateAlG(G); for(int i=1;i<=G.vexnum ;i++) visited[i]=0; visited[start]=1; s=dfs(G,start,des); if(find) printf("%d",s); else printf("-1"); return 0; } int CreateAlG(AlGraph &G) { int i,j; for(i=1;i<=G.vexnum;i++) { scanf("%d",&G.vertices[i].data); G.vertices[i].firstadj=NULL; node p,q; for(j=1;j<=G.vertices[i].data;j++) { p=(node)malloc(M); if(!p) return 0; scanf("%d",&p->adjvex); p->next=NULL; if(j==1) G.vertices[i].firstadj=p; else q->next=p; q=p; } } return 0; } int dfs(AlGraph G,int start,int des) { int s=0,j; node p; if(start==des) { find=1; return s; } for(p=G.vertices[start].firstadj;p;p=p->next,s++) { j=p->adjvex; if(!visited[j]) { visited[j]=1; int temp=dfs(G,j,des); if(find==1) { s+=temp; break; } } } return s; } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator