67分求助
  • 板块P1807 最长路
  • 楼主idniesne
  • 当前回复10
  • 已保存回复10
  • 发布时间2022/11/24 20:34
  • 上次更新2023/10/27 01:39:50
查看原帖
67分求助
831463
idniesne楼主2022/11/24 20:34
#include<iostream>
#include<vector>
#include<queue>
#include<cmath>
#define maxn 1510
using namespace std;

int n, m, ans;
int f[maxn], ind[maxn];
struct node{
	int v, w;
};
vector<node>v[maxn];
queue<int>q;

int main()
{
	cin>>n>>m;
	for(int i = 0; i < m; i++){
		int u;
		node no;
		cin>>u>>no.v>>no.w;
		ind[no.v]++;
		v[u].push_back(no);
	}
	q.push(1);
	while(!q.empty()){
		int x = q.front();
		q.pop();
		for(int i = 0; i < v[x].size(); i++){
			if(v[x][i].v == n)ans = 1;
			f[v[x][i].v] = max(f[v[x][i].v], f[x] + v[x][i].w);
			ind[v[x][i].v]--;
			if(ind[v[x][i].v] == 0){
				q.push(v[x][i].v);
			}
		} 
	}
	if(ans == 0)cout<<"-1";
	else cout<<f[n];
	return 0;
}
2022/11/24 20:34
加载中...