求dalao调错,样例能过,提交7WA,3RE,不求过,只求有分,P3371
查看原帖
求dalao调错,样例能过,提交7WA,3RE,不求过,只求有分,P3371
224497
Lucas_Wei楼主2022/7/16 09:20
#include<bits/stdc++.h>
using namespace std;
int n,m,s,e[1001][1001],d[10001];
bool vis[10001];
int main()
{
	cin>>n>>m>>s;
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=n;j++)
		{
			if(i==j) continue;
			else e[i][j]=99999999;
		}
	}
	for(int i=1;i<=m;i++)
	{
		int x,y,z;
		cin>>x>>y>>z;
		e[x][y]=z;
	}
	for(int i=1;i<=n;i++) d[i]=e[s][i];
    vis[s]=1;
	for(int i=1;i<n;i++)
	{
		int minn=99999999,k=-1;
		for(int j=1;j<=n;j++)
		{
			if(!vis[j]&&d[j]<minn)
			{
				minn=d[j];
				k=j;
			}
		}
        if(k==-1)
        {
            d[k]=pow(2,31)-1;
            continue;
        }
		vis[k]=1;
		for(int j=1;j<=n;j++)
		{
			if(!vis[j]&&d[j]>d[k]+e[k][j]&&e[k][j]!=99999999)
			{
				d[j]=d[k]+e[k][j];
			}
		}
	}
	for(int i=1;i<=n;i++) cout<<d[i]<<" ";
	return 0;
}

求调,谢谢了

2022/7/16 09:20
加载中...