求助,23分拓扑排序
查看原帖
求助,23分拓扑排序
576639
woshishabi11451444楼主2023/6/10 10:56
#include<bits/stdc++.h>
using namespace std;
const int N=5e4+5;
const int inf=0x7fffffff;
int n,m,t[N],du[N],f[N];
vector<int> e[N];
queue<int> q;
int main(){
	cin>>n>>m;
	for(int i=1;i<=m;i++){
		int u,v;
		cin>>u>>v>>t[i];
		du[u]++;
		e[v].push_back(u);
	}
	for(int i=1;i<=n;i++){
		if(!du[i]){
			f[i]=t[i];
			q.push(i);
		}
	}
	while(!q.empty()){
		int u=q.front();
		q.pop();
		for(int i=0;i<e[u].size();i++){
			int v=e[u][i];
			--du[v];
			if(!du[v]){
				q.push(v);
			}
			f[v]=max(f[v],f[u]+t[v]);
		}
	}
	int ans=-inf;
	for(int i=1;i<=n;i++) ans=max(ans,f[i]);
	cout<<ans;
	return 0;
}
2023/6/10 10:56
加载中...