求助
查看原帖
求助
362529
dang_dang楼主2021/7/15 08:25

为什么我的代码所有的点都RE了?

#include<iostream>
using namespace std;
#define maxn 1000
int n,m,s,edge[maxn][maxn],dist[maxn],MAX=0xFFFFFF;
bool visited[maxn]={false};
int used;
void dis(void)
{
	for(int j=1;j<m;j++)
	{
	    int minv=MAX;
		for(int i=1;i<=m;i++)
		{
			if(minv>dist[i]&&!visited[i])
			{
				used=i;
				minv=dist[i];
			}
		}
        visited[used]=true;
        for(int x=1;x<=m;x++)
        {
            if(dist[x]>dist[used]+edge[used][x]) dist[x]=dist[used]+edge[used][x];
        }
	}
}
int main(void)
{
	cin>>m>>n>>s;
	for(int i=1;i<=m;i++) // m个顶点,n条边
	{
		for(int j=1;j<=m;j++)
		{
			if(i==j) edge[i][j]=0;
			else edge[i][j]=MAX;
		}
	}
	for(int i=1;i<=n;i++)
	{
		int u,v,w;
		cin>>u>>v>>w;
		edge[u][v]=w;
	}
	visited[s]=true;
	for(int i=1;i<=m;i++) dist[i]=edge[s][i];
	dis();
	for(int i=1;i<=m;i++) cout<<dist[i]<<" ";
}
2021/7/15 08:25
加载中...