我一直WA on #1(还有两个TLE,但先别管)
#include<bits/stdc++.h>
using namespace std;
long long n,m,a[1501][1501];
bool rd[1501][1501];
long long dfs(int now,int prep,int sum)
{
if(now==n)
return sum;
long long ans=-1145141919810;
for(int i=1;i<=n;i++)
{
if(i==prep)
continue;
if(rd[now][i]==1)
ans=max(ans,dfs(i,now,sum+a[now][i]));
}
return ans;
}
int main()
{
cin>>n>>m;
for(int i=1;i<=m;i++)
{
long long x,y,z;
cin>>x>>y>>z;
if(rd[x][y]==0)
a[x][y]=z;
else
a[x][y]=max(a[x][y],z);
rd[x][y]=1;
}
long long ans=dfs(1,0,0);
if(ans==-1145141919810)
cout<<-1;
else
cout<<ans;
return 0;
}
下了一下数据点
数据1输入:
5 6
1 5 -38
4 6 -1
1 3 -5
1 4 -2
5 6 37
1 2 -1
数据1输出:
-1
可以发现n为5,但是边已经给到了6。
这是我的问题还是数据的问题?