拓扑排序56分求调!!
  • 板块P1807 最长路
  • 楼主Trubiacy_
  • 当前回复14
  • 已保存回复14
  • 发布时间2023/6/25 22:11
  • 上次更新2023/11/3 12:25:04
查看原帖
拓扑排序56分求调!!
750535
Trubiacy_楼主2023/6/25 22:11
#include <bits/stdc++.h>
using namespace std;
const int N=1509;
int n,m,a[N][N],u,v,w,ind[N],dp[N];
queue<int> q;
void toposort(){
	while(q.size()){
		int s=q.front();q.pop();
		for(int i=1;i<=n;i++){
			if(a[s][i]==0) continue;
			ind[i]--;
			dp[i]=max(dp[i],dp[s]+a[s][i]);
			if(ind[i]==0) q.push(i);
		}
	}
}
int main()
{
	cin>>n>>m;
	for(int i=1;i<=m;i++){
		cin>>u>>v>>w;
		ind[v]++;
		a[u][v]=max(a[u][v],w);
	}
	for(int i=1;i<=n;i++){
		if(ind[i]==0){
			q.push(i);
			dp[i]=0;
		} 
	}
	toposort();
	if(dp[n]==0) cout<<-1;
	else cout<<dp[n];
	return 0;
}
2023/6/25 22:11
加载中...