http://ybt.ssoier.cn:8088/problem_show.php?pid=1261
我没在洛谷上找到这道题
#include<iostream>
using namespace std;
int n,m=2147483647;
int a[10001][10001];
int b[10001];
int c[10001],len;
void dfs(int k,int ans)
{
if(k==n)
{
if(m>ans)
{
b[0]=len;
for(int i=1;i<=len;i++)
{
b[i]=c[i];
}
m=ans;
}
len=0;
}
else
{
for(int i=1;i<=n;i++)
{
if(a[k][i]!=0)
{
c[++len]=i;
dfs(i,ans+a[k][i]);
}
}
}
}
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
cin>>a[i][j];
}
}
dfs(1,0);
cout<<"minlong="<<m<<endl;
cout<<1<<' ';
for(int i=1;i<=b[0];i++)
{
cout<<b[i]<<" ";
}
return 0;
}