Dijkstra #4WA求调
  • 板块CF20C Dijkstra?
  • 楼主garychu
  • 当前回复1
  • 已保存回复1
  • 发布时间2024/12/2 12:31
  • 上次更新2024/12/2 18:33:04
查看原帖
Dijkstra #4WA求调
997660
garychu楼主2024/12/2 12:31
#include<bits/stdc++.h>
using namespace std;
typedef pair<int,int> P;
const int N=1e5+5;
int n,m;
struct edge{
	int v,w;
};
vector<edge> mp[N];
priority_queue<P,vector<P>,greater<P> > q;
int vis[N],pre[N];
long long dis[N];
void init(){
	memset(dis,0x3f,sizeof(dis));
	memset(pre,-1,sizeof(pre));
	dis[1]=0;
	pre[1]=0;
	return;
}
void dij(){
	init();
	q.push({0,1});
	while(!q.empty()){
		P h=q.top();
		q.pop();
		int u=h.second;
		if(vis[u])	continue;
		vis[u]=1;
		int len=mp[u].size();
		for(int j=0;j<len;j++){
			int v=mp[u][j].v,w=mp[u][j].w;
			if(dis[u]+w<dis[v]){
				dis[v]=dis[u]+w;
				pre[v]=u;
				q.push({dis[v],v});
			}	
		}
	}
	return;
}
void print(int v){
	if(v==-1){
		cout<<-1;
		return;
	}
	if(v==0)
		return;
	print(pre[v]);
	cout<<v<<" ";
}
int main(){
	cin>>n>>m;
	for(int i=1;i<=m;i++){
		int u,v,w;
		cin>>u>>v>>w;
		mp[u].push_back({v,w});
		mp[v].push_back({u,w}); 
	}
	dij();
	print(n);
	return 0;
}

求调

2024/12/2 12:31
加载中...