求助裸dijstra
查看原帖
求助裸dijstra
534589
S_Kuroko楼主2024/4/17 19:35
#include<bits/stdc++.h>
using namespace std;

int n,m,s,t;
int g[2550][2550];
int dist[2550];
bool st[2550];

int dijstra()
{
	for(int i=1;i<=n;i++)
	{
		dist[i]=0x3f;
		st[i]=0;
	}
	dist[s]=0;
	st[s]=1;
	for(int i=1;i<=n;i++)
	{
		int h=-1;
		for(int j=1;j<=n;j++)
		{
			if(!st[j]&&(h==-1||dist[j]<dist[h]))
			{
				h=j;
			}
		}
		st[h]=1;
		
		for(int j=1;j<=n;j++)
		{
			if(dist[h]>dist[j]+g[j][h])
			{
				dist[h]=dist[j]+g[j][h];
			}
		}
	}
	return dist[t];
}

int main()
{
	cin>>n>>m>>s>>t;
	int u,v,w;
	for(int i=1;i<=m;i++)
	{
		cin>>u>>v>>w;
		g[u][v]=min(g[u][v],w);
		g[v][u]=min(g[v][u],w);
	}
	
	cout<<dijstra();
	return 0;
} 
2024/4/17 19:35
加载中...