7-3 地下迷宫探索 (dfs 简单输出路径)

    科技2022-07-17  115

    pta

    #include <iostream> #include<bits/stdc++.h> using namespace std; const int inf=9999999; int n,m,s; int ma[1009][1009]; bool vis[1009]; int sum; bool flag; void dfs(int q) //输出路径的时候输出本次的, { //如果输出下一次的,那么将不好判断 if(flag) //下一次要不要输出回去的路 printf(" "); //要不要输出空格,就容易错 flag=1; printf("%d",q); for(int i=1; i<=n; i++) { if(vis[i]==0&&ma[q][i]==1) { sum++; vis[i]=1; dfs(i); printf(" %d",q); } } return ; } int main() { memset(vis,0,sizeof(vis)); memset(ma,0,sizeof(ma)); scanf("%d%d%d",&n,&m,&s); sum=0; for(int i=0; i<m; i++) { int a,b; scanf("%d%d",&a,&b); ma[a][b]=ma[b][a]=1; } vis[s]=1; sum++; // printf("%d",s); dfs(s); // if(sum>1)printf(" %d",s); // if(sum==n)printf("\n"); if(sum<n) printf(" 0\n"); return 0; }
    Processed: 0.010, SQL: 8