求调
查看原帖
求调
1053119
hard_learn楼主2024/8/15 13:49
#include<bits/stdc++.h>
using namespace std;
int n,m; 
struct st{
	int c,step;
};
vector<st>sum[1505];
int rd[1505],dis[1505];
int main(){
	cin>>n>>m;
	for(int i=1;i<=m;i++){
		int u,v,w;
		cin>>u>>v>>w;
		sum[u].push_back((st){v,w});
		rd[v]++;
	}
	for(int i=2;i<n;i++){
		dis[i]=INT_MIN;
	}
	dis[1]=0;
	queue<int>q;
	q.push(1);
	for(int i=2;i<=n;i++){
		if(rd[i]==0){
			q.push(i);
		}
	}
	while(q.empty()==0){
		int now=q.front();
		q.pop();
		for(int i=0;i<sum[now].size();i++){
			int op=sum[now][i].c;
			dis[op]=max(dis[op],dis[now]+sum[now][i].step);
			rd[op]--;
			if(rd[op]==0){
				q.push(op);
			}
		}
	}
	cout<<dis[n]<<endl;
	return 0;
}
2024/8/15 13:49
加载中...