求助各位大佬,为什么这样写dijkstra输出全是0?
  • 板块学术版
  • 楼主WHYSOSEIROUS
  • 当前回复11
  • 已保存回复11
  • 发布时间2021/8/22 17:39
  • 上次更新2023/11/4 09:28:16
查看原帖
求助各位大佬,为什么这样写dijkstra输出全是0?
386782
WHYSOSEIROUS楼主2021/8/22 17:39
#include <bits/stdc++.h>
#define INF 2147483647
using namespace std;

int n,m,s,u,v,w;
vector<pair<int, int > > e[10005];
bool vis[10005];
int dis[10005];

void dij(int x ){
	priority_queue<pair<int ,int > >q;
	memset(vis,false,sizeof(vis));
	memset(dis,INF,sizeof(dis));
	dis[x]=0;
	q.push(make_pair(0,x));
	while(!q.empty()){
		int now=q.top().second;
		q.pop();
		if(vis[now]){
			continue;
		}
		vis[now]=true;
		for(int i=0;i<e[now].size();i++){
			int t=e[now][i].first,w=e[now][i].second;
			if(dis[t] > dis[now] + w){
				dis[t] = dis[now] + w;
				q.push(make_pair(-dis[t] , t));
			}
		}
	}
}

int main(){
	cin>>n>>m>>s;
	for(int i=1;i<=m;i++){
		cin>>u>>v>>w;
		e[u].push_back(make_pair(v,w));
	}	
	for(int i=1;i<=n;i++){
		cout<<dis[i]<<endl;
	}
	return 0;
}
2021/8/22 17:39
加载中...