弱弱地问一句,拓扑能写吗
  • 板块P1807 最长路
  • 楼主Iamcly1
  • 当前回复5
  • 已保存回复5
  • 发布时间2022/7/7 17:24
  • 上次更新2023/10/27 21:35:14
查看原帖
弱弱地问一句,拓扑能写吗
577635
Iamcly1楼主2022/7/7 17:24
#include<bits/stdc++.h>
using namespace std;
int n,m;
int a[1501],b[50001],w[1501][50001];
int ans[1501];
queue<int>q;
int in[1501],out[1501];
vector<int>g[1501];
int main() {
	cin>>n>>m;
	for(int i=1;i<=m;i++){
		cin>>a[i]>>b[i]>>w[a[i]][b[i]];
		g[a[i]].push_back(b[i]);
		++in[b[i]],++out[a[i]];
	}
	for(int i=1;i<=n;i++){
		if(in[i]==0){
			q.push(i);
			ans[i]=0;
		}
	}
	while(q.size()){
		int x=q.front();
		q.pop();
		for(int y:g[x]){
			--in[y];
			ans[y]=max(w[x][y]+ans[x],ans[y]);
			if(in[y]==0)q.push(y);
		}
	}
	for(int i=1;i<=n;i++){
		if(out[i]==0){
			if(ans[i]==0){
				cout<<-1;
			}
			else cout<<ans[i];
			return 0;
		}
	}
}
2022/7/7 17:24
加载中...