#include <stdio.h> #include <string.h> int isvisited[51],mat[51][51],cnt,n; void dfs(int start){ if (cnt>=n) { return ; } cnt++; isvisited[start]=1; printf("%d ",start); for (int i=0;i<n;i++) { if (!isvisited[i]&&mat[start][i]==1) { dfs(i); } } } int main(){ int i,j; // freopen("1.txt","r",stdin); while (scanf("%d",&n)==1) { for (i=0;i<n;i++) { for (j=0;j<n;j++) { scanf("%d",&mat[i][j]); } } cnt=0; memset(isvisited,0,sizeof(isvisited)); for (i=0;i<n;i++) { if (!isvisited[i]) { dfs(i); } } printf("\n"); } // fclose(stdin); return 0; } /************************************************************** Problem: 2159 User: admin Language: C Result: Accepted Time:10 ms Memory:1156 kb ****************************************************************/