评测机抽风了?
  • 板块灌水区
  • 楼主Ptilopsis_
  • 当前回复5
  • 已保存回复5
  • 发布时间2021/11/6 20:44
  • 上次更新2023/11/4 01:14:19
查看原帖
评测机抽风了?
524994
Ptilopsis_楼主2021/11/6 20:44

P1629交上去不对,但把测试点下下来,直接用cmd输入测试点是对的,诡异

#include<bits/stdc++.h>
using namespace std;
int a[10002][10002],d[10002],vis[10002];
const int MAXN=1<<29;
void dij(int n,int s)
{
	for(int i=1;i<=n;i++)
	{
		d[i]=a[s][i];
		vis[i]=0;
	}
	vis[s]=1;
	d[s]=0;
	for(int i=1;i<=n-1;i++)
	{
		int minn=MAXN,u=-1;
		for(int j=1;j<=n;j++)
		{
			if(vis[j]==0&&d[j]<minn)
			{
				minn=d[j];
				u=j;
			}
		}
		vis[u]=1;
		for(int j=1;j<=n;j++)
		{
			if(vis[j]==0&&d[u]+a[u][j]<d[j])
				d[j]=d[u]+a[u][j];
		}
	}
}
int main()
{
    int n,m,x,y,z;
    cin>>n>>m;
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=n;j++)
        {
            if(i!=j)
            a[i][j]=MAXN;
        }
    }
    for(int i=1;i<=m;i++)
    {
        cin>>x>>y>>z;
        a[x][y]=min(a[x][y],z);
    }
    dij(n,1);
    int ans;
    for(int i=1;i<=n;i++)
    {
        ans+=d[i];
    }
    for(int i=1;i<=n;i++)
        for(int j=i+1;j<=n;j++)
            swap(a[i][j],a[j][i]);
    dij(n,1);
    for(int i=1;i<=n;i++)
    {
        ans+=d[i];
    }
    cout<<ans;
    return 0;
}

本蒟蒻不想活了.jpg

2021/11/6 20:44
加载中...