56pts,dijkstra+堆优化,孩子wa飞了
  • 板块P1807 最长路
  • 楼主MornHus
  • 当前回复10
  • 已保存回复10
  • 发布时间2023/1/8 15:05
  • 上次更新2023/10/24 05:10:06
查看原帖
56pts,dijkstra+堆优化,孩子wa飞了
752094
MornHus楼主2023/1/8 15:05
#include<bits/stdc++.h>
using namespace std;
int n,m,u,v,w;
struct node{
	int to,val;
};
struct point{
	int id,distance;
	bool operator < (const point & a)const{
		return distance<a.distance;
	}
};
int dis[1501];
bool vis[1501];
priority_queue<point>q;
vector<node>gragh[1501];
void dijkstra(){
	for(int i=2;i<=n;i++){
		dis[i]=-0x3f3f3f3f;
	}
	point curr;
	q.push({1,0});
	while(!q.empty()){
		curr=q.top();q.pop();
		if(vis[curr.id])continue;
		vis[curr.id]=1;
		for(int i=0;i<gragh[curr.id].size();i++){
			if(dis[gragh[curr.id][i].to]<dis[curr.id]+gragh[curr.id][i].val){
				dis[gragh[curr.id][i].to]=dis[curr.id]+gragh[curr.id][i].val;
				q.push({gragh[curr.id][i].to,dis[gragh[curr.id][i].to]});
			}
		}
	}
}
int main(){
	scanf("%d %d",&n,&m);
	for(int i=1;i<=m;i++){
		scanf("%d %d %d",&u,&v,&w);
		gragh[u].push_back({v,w});
	}
	dijkstra();
	if(dis[n]==-0x3f3f3f3f)cout<<-1;
	else cout<<dis[n];
	return 0;
}
2023/1/8 15:05
加载中...