洛谷P1807 最长路

洛谷P1807 最长路

#include<bits/stdc++.h>
#define int long long
using namespace std;
const int inf=-1e6;const int maxx=2550005;
int n,m,head,tail,g[1505][1505],q[maxx];
int dp[1505];bool flag[1505];//flag记录点是否在队内 
signed main(){
	cin>>n>>m;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++)
		g[i][j]=inf;
		dp[i]=inf;
	}
	int t1=0,t2=0,tmp=0;
	for(int i=1;i<=m;i++){
		cin>>t1>>t2>>tmp;
		g[t1][t2]=max(g[t1][t2],tmp);
	}
	q[++tail]=1;head++;dp[1]=0;
	while(head<=tail){
		for(int i=1;i<=n;i++){
			if(g[q[head]][i]!=inf){
				dp[i]=max(dp[i],dp[q[head]]+g[q[head]][i]);
				if(!flag[i]) q[++tail]=i,flag[i]=true;
			}
		}
		flag[q[head]]=false;head++;
	}
	if(dp[n]==inf) cout<<-1<<endl;
	else cout<<dp[n]<<endl;
	return 0;
}

进食后人:

1、可能有多个点入度为0(不过我写的是SPFA,这并不影响)

2、可能存在重边(两点间有多个权值不同的边相连),要取最大边权(因为我懒得写链式前向星所以直接用了邻接矩阵,然后被hack了,,)

3、如果你82pts&&hacked on#3#9,别忘了无法到达时输出-1

posted @   Gcint  阅读(25)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探
· 为什么 退出登录 或 修改密码 无法使 token 失效
点击右上角即可分享
微信分享提示