46分求调
  • 板块P1807 最长路
  • 楼主SiriusIV
  • 当前回复0
  • 已保存回复1
  • 发布时间2024/3/30 15:45
  • 上次更新2024/3/30 17:42:05
查看原帖
46分求调
1147243
SiriusIV楼主2024/3/30 15:45
#include<bits/stdc++.h>
using namespace std;
struct ec
{
	int to,next,v;
}e[1000001];
int n,m,head[1000001],k,jl[1000001],vis[1000001];
void add(int u,int v,int w)
{
	e[++k].to=v;
	e[k].next=head[u];
	head[u]=k;
	e[k].v=w;
}
struct node
{
    int d,jd;
    bool operator < (const node &a) const
	{
    	return a.d>d;
    }
};
int main()
{
	cin>>n>>m;
	for(int i=1;i<=n;i++)
	{
		jl[i]=-114514;
	}
	for(int i=1;i<=m;i++)
	{
		int u,v,w;
		cin>>u>>v>>w;
		add(u,v,w);
	}
	priority_queue<node>pq;
	pq.push((node){0,1});
	jl[1]=0;
	while(!pq.empty())
	{
		node a=pq.top();
		pq.pop();
		if(vis[a.jd]==1)
		{
			continue;
		}
		vis[a.jd]=1;
		for(int u=head[a.jd];u;u=e[u].next)
		{
			if(jl[e[u].to]<jl[a.jd]+e[u].v)
			{
				jl[e[u].to]=jl[a.jd]+e[u].v;
				pq.push((node){jl[e[u].to],e[u].to});
			}
		}
	}
	if(jl[n]==-114514)puts("-1");
	else cout<<jl[n];
	return 0;
}
2024/3/30 15:45
加载中...