玄关,求救啊
  • 板块学术版
  • 楼主Happy_Doggie
  • 当前回复3
  • 已保存回复3
  • 发布时间2023/11/19 09:20
  • 上次更新2023/11/19 10:53:27
查看原帖
玄关,求救啊
742221
Happy_Doggie楼主2023/11/19 09:20
#include<bits/stdc++.h>
using namespace std;
const int N=10000+10;
const int NN=100000*5;
typedef long long ll;
ll g[N][N],dis[NN],book[NN];
ll n,m,s,minn;
ll x,y,l,u,v;
int main() {
	cin>>n>>m>>s;
	for(int i=1;i<=n;i++) {
		for(int j=1;j<=n;j++) {
			if(i==j) g[i][j]=0;
			else g[i][j]=2147483647;
		}
	}
	for(int i=1;i<=m;i++) {
		cin>>x>>y>>l;
		g[x][y]=l;
	}
	for(int i=1;i<=n;i++) 
		dis[i]=g[1][i];
	for(int i=1;i<=n;i++)
		book[i]=0;
	book[1]=1;
	for(int i=1;i<=n-1;i++) {
		minn=2147483647;
		for(int j=1;j<=n;j++) {
			if(book[j]==0&&dis[j]<minn) {
				minn=dis[j];
				u=j;
			}
		}
		book[u]=1;
		for(v=1;v<=n;v++) {
			if(g[u][v]<1e9) {
				if(dis[v]>dis[u]+g[u][v])
					dis[v]=dis[u]+g[u][v];
			}
		}
	}
	for(int i=1;i<=n;i++)
		printf("%d ",dis[i]);
	getchar();
	getchar();
	return 0;
}

一个点也不过

2023/11/19 09:20
加载中...