%%%```
#include<iostream>
using namespace std;
int a[25],b[25][25],visited[25],p[25],n,mx;
int dfs(int k)
{
int maxx=0,l=0;
for(int i=1;i<=n;i++)
{
if(b[k][i]&&!visited[i])
{
visited[i]=1;
int t=dfs(i);
if(t>maxx)
{
maxx=t;
l=i;
}
visited[i]=0;
}
}
p[k]=l;
return a[k]+maxx;
}
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>a[i];
}
for(int i=1;i<=(n-1);i++)
{
for(int j=(i+1);j<=n;j++)
{
cin>>b[i][j];
//b[j][i]=b[i][j];
}
}
int ans=0,l;
for(int i=1;i<=n;i++)
{
int t=dfs(i);
if(t>ans)
{
ans=t;
l=i;
}
}
cout<<l;
while(p[l])
{
cout<<' '<<p[l];
l=p[l];
}
cout<<endl;
cout<<ans<<endl;
return 0;
}
```
by xxc123 @ 2024-04-23 20:41:59