社区讨论

求救P1807

P1807最长路参与者 1已保存回复 0

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
0 条
当前快照
1 份
快照标识符
@mhjuf1yb
此快照首次捕获于
2025/11/04 08:40
4 个月前
此快照最后确认于
2025/11/04 08:40
4 个月前
查看原帖
CPP
#include<bits/stdc++.h>
using namespace std;
vector<int>p[1505];
vector<int>v[1505];
int id[1505];
queue<int>q;
long long f[1505];
int main(){
	//freopen("P1807_1.in","r",stdin);
	int n,m;
	cin>>n>>m;
	for(int i=1;i<=m;i++){
		int x,y,k;
		cin>>x>>y>>k;
		id[y]++;
		p[x].push_back(y);
		v[x].push_back(k);//路线长度 
	}
	memset(f,-0x3f,sizeof(f));//初始化 
//	for(int i=1;i<=n;i++){
//		if(!id[i]){
//			q.push(i);
//			f[i]=0;
//		}
//	}
	f[1]=0;
	q.push(1);
	while(!q.empty()){
		int x=q.front();
		q.pop();
		for(int i=0;i<p[x].size();i++){
			int y=p[x][i];
			id[y]--;
			f[y]=max(f[y],v[x][i]+f[x]);//更新 
			if(!id[y]){
				q.push(y);
			}
		}
	}
	if(f[n]<0){
		cout<<-1;
	}else{
		cout<<f[n];
	}
	return 0;
}
测试点1,2,5,7,8过不了

回复

0 条回复,欢迎继续交流。

正在加载回复...