#include<cstdio>
#include<vector>
#include<queue>
using namespace std;
struct Edge
{
int v,w;
};
int t[10010],rd[10010],n,m,u,v,w,c,d;
vector <Edge> g[10010];
queue<int> q,q2;
void my_topsort()
{
while(!q.empty())
{
c=q.front();
q.pop();
for(int i=0;i<g[c].size();i++)
{
rd[g[c][i].v]--;
if(rd[g[c][i].v]==0)
{
q.push(g[c][i].v);
}
d=g[c][i].w;
if(t[c]+d>t[g[c][i].v]) t[g[c][i].v]=t[c]+d;
}
}
}
int main()
{
scanf("%d%d",&n,&m);
for(int i=0;i<m;i++)
{
scanf("%d%d%d",&u,&v,&w);
g[u].push_back({v,w});
rd[v]++;
}
for(int i=1;i<=n;i++)
{
if(rd[i]==0) q.push(i);
}
my_topsort();
if(t[n]==0) printf("-1");
else printf("%d",t[n]);
return 0;
}
用的是拓扑排序
题解努力理解过了,不大懂,请大佬们帮我看一下是哪里出错了,谢谢大佬们的关注