source#include<stdio.h>
#include<math.h>
#include<string.h>
#include<algorithm>
#define N 200
using namespace std;
int map[N][N];
int ans[N],n;
bool vis[N];
bool judge(int m)
{
if(m==n)
return true;
for(int i=0;i<n;i++)
{
if(!vis[i]&&map[m][i])
{
ans[m]=i+1;
vis[i]=1;
if(judge(m+1))
return true;
vis[i]=0;
}
}
return false;
}
int main()
{
int i,j;
while(scanf("%d",&n)!=EOF)
{
memset(vis,false,sizeof(vis));
memset(ans,0,sizeof(ans));
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
scanf("%d",&map[i][j]);
}
}
if(judge(0))
{
printf("%d",ans[0]);
for(i=1;i<n;i++)
printf(" %d",ans[i]);
printf("\n");
}
}
return 0;
}
|