c++P3371 迪杰斯特拉求调
  • 板块学术版
  • 楼主super_zzr
  • 当前回复0
  • 已保存回复0
  • 发布时间2023/5/2 19:49
  • 上次更新2023/10/23 16:52:33
查看原帖
c++P3371 迪杰斯特拉求调
966353
super_zzr楼主2023/5/2 19:49

这里是代码,样例会输出0 INF INF INF

#include<bits/stdc++.h>
#define INF 0x3f3f3f3f
#define N 1001
using namespace std;
long long tu[N][N],n,m,cnt=0;
long long dist[N];
bool vis[N]={0};
void dijkstra(int root){
	cnt++;
	if(cnt>=n){
		return ;
	}
	vis[root]=1;
	int minn=1e9,roo;
	for(int i=1;i<=n;i++){
		if(vis[i]==0&&tu[root][i]<1e9){
			dist[i]=min(dist[root]+tu[root][i],dist[i]);
			if(dist[i]<minn){
				minn=dist[i];
				roo=i;
			}
		}
	}
	dijkstra(roo);
}
int main(){
	memset(tu,1e9,sizeof tu);
    int n,m,s;
    cin>>n>>m>>s;
    for(int j=1;j<=m;j++){
    	long long x,y,z;
       	cin>>x>>y>>z;
        tu[x][y]=max(tu[x][y],z);
    }
	memset(dist,INF,sizeof dist);
	memset(vis,0,sizeof vis);
	dist[s]=0;
    dijkstra(s);
    for(int i=1;i<=n;i++){
        cout<<dist[i]<<" ";
    }
    return 0;
}
2023/5/2 19:49
加载中...