Free DIY Tour 点击打开
这道题本来是想着用dfs做的,代码写出来后可以求出最大值,但是无法实现路径的输出,。。大家如果有啥好的想法可以提出来哈,谢谢~
#include <iostream>
#include <queue>
using namespace std;
int point[110],n,m,map[110][110],visit[110];
int maxn;
queue<int> s;
void dfs(int number,int cur)
{
if(number==n+1)
{
if(cur>maxn)maxn=cur;
return;
}
int i;
for( i=number;i<=n+1;i++)
{
if(map[number][i]&&!visit[i])
{
visit[i]=1;
s.push(i);
dfs(i,cur+point[i]);
visit[i]=0;
}
}
return ;
}
int main()
{
int t,test=0;
int ai,bi;
cin>>t;
while(t--)
{
test++;
printf("CASE %d#\n",test);
memset(visit,0,sizeof(visit));
memset(map,0,sizeof(map));
cin>>n;
for(int i=1;i<=n;i++)
cin>>point[i];
point[n+1]=0;
cin>>m;
for(int i=0;i<m;i++)
{
cin>>ai>>bi;
map[ai][bi]=1;
}
maxn=-1;
dfs(1,0);
cout<<maxn<<endl;
}
return 0;
}