数据:
5 4
1 4 1
4 5 1
3 2 1
2 4 1
显然答案是 2。
题解区试了几篇,都没问题。
被HACK代码:
#include<bits/stdc++.h>
#define ll long long
using namespace std;
struct node{
int to,next;
int val;
}edg[50005];
int head[1505];
int elen;
int in[1505];
ll dis[1505];
queue<int>q;
int n,m;
int u,v,w;
void add(int fr,int to,int w){
++elen;
++in[to];
edg[elen].to=to;
edg[elen].val=w;
edg[elen].next=head[fr];
head[fr]=elen;
}
ll tp(int s,int ed){
for(int i=1;i<=n;i++){
if(in[i]==0&&i>1){
for(int j=head[i];j;j=edg[j].next){
--in[edg[j].to];
}
}
dis[i]=-1;
}
dis[s]=0;
q.push(s);
while(!q.empty()){
int x=q.front();
q.pop();
for(int i=head[x];i;i=edg[i].next){
dis[edg[i].to]=max(dis[edg[i].to],dis[x]+edg[i].val);
--in[edg[i].to];
if(!in[edg[i].to])q.push(edg[i].to);
}
}
return dis[ed];
}
int main(){
scanf("%d%d",&n,&m);
for(int i=1;i<=m;i++){
scanf("%d%d%d",&u,&v,&w);
add(u,v,w);
}
return !printf("%lld",tp(1,n));
}