蒟蒻求助!!!!!!!!!!
  • 板块学术版
  • 楼主wweiyi
  • 当前回复3
  • 已保存回复3
  • 发布时间2020/10/5 16:28
  • 上次更新2023/11/5 11:56:12
查看原帖
蒟蒻求助!!!!!!!!!!
136889
wweiyi楼主2020/10/5 16:28
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <string>
#include <cstring>
#include <vector>
using namespace std;
const int maxn=100005;
struct node{
	int to,w;
};
node make_node(int y,int z){
	node d;
	d.to=y;d.w=z;
	return d;
}
vector <node> g[maxn];
int n,m,s;
int d[100005];
bool v[100005];
void dijkstra()
{
	memset(d,0x3f,sizeof(d));
	memset(v,0,sizeof(v));
	d[1]=0;
	for(int i=1;i<n;i++)
	{
		int x=0;
		for(int j=1;j<=n;j++)
			if(!v[j]&&(x==0||d[j]<d[x]))
			x=j;
		v[x]=1;
		for(int y=1;y<=n;y++)
		d[y]=min(d[y],d[x]+g[x][y].w);
	}
}
int main()
{
	cin>>n>>m>>s;
	for(int i=1;i<=m;i++)
	{
		int u,v,w;
		cin>>u>>v>>w;
		g[u].push_back(make_node(v,w)); 
	}
	for(int i=1;i<=n;i++)
	g[i][i].w=0;
	dijkstra();
	for(int i=1;i<=n;i++)
	cout<<d[i]<<" ";
	cout<<endl;
	return 0; 
}

请问一下这个最短路为什么算不出来正确答案!

2020/10/5 16:28
加载中...