求助
  • 板块P1364 医院设置
  • 楼主BugGod
  • 当前回复1
  • 已保存回复1
  • 发布时间2023/7/12 17:17
  • 上次更新2023/11/3 10:16:44
查看原帖
求助
541254
BugGod楼主2023/7/12 17:17

WA\color{red}\texttt{WA} 0pts0pts

#include<bits/stdc++.h>
using namespace std;
int n,dp[110][110],ans=2e9,w[110];
//vector<int>G[110];
void floyd()
{
	for(int k=1;k<=n;k++)
	{
		for(int i=1;i<=n;i++)
		{
			if(i!=k)
			{
				for(int j=1;j<=n;j++)
				{
					if(i!=j&&k!=j)
					{
						dp[i][j]=min(dp[i][j],dp[i][k]+dp[k][j]);
					}
				}
			}
		}
	}
}
int main()
{
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=n;j++)
		{
			if(i!=j)dp[i][j]=2e9;
		}
	}
//	for(int i=1;i<=n;i++)
//	{
//		for(int j=1;j<=n;j++)cout<<dp[i][j]<<' ';
//		cout<<endl;
//	}
	for(int i=1;i<=n;i++)
	{
		int u,v;
		cin>>w[i]>>u>>v;
		if(u>0)dp[u][i]=dp[i][u]=1;
		if(v>0)dp[v][i]=dp[i][v]=1;
	}
//	for(int i=1;i<=n;i++)
//	{
//		for(int j=1;j<=n;j++)cout<<dp[i][j]<<' ';
//		cout<<endl;
//	}
//	floyd();
//	for(int i=1;i<=n;i++)
//	{
//		for(int j=1;j<=n;j++)cout<<dp[i][j]<<' ';
//		cout<<endl;
//	}
	for(int i=1;i<=n;i++)
	{
		int sum=0;
		for(int j=1;j<=n;j++)
		{
			if(i!=j&&dp[i][j]>0&&w[j]>0)sum+=w[j]*dp[i][j];
			//cout<<w[j]*dp[i][j]<<endl;
		}
		ans=min(ans,sum);
		//cout<<ans<<endl;
	}
	cout<<ans;
	return 0;
}

样例输出 −2028888051-2028888051 。

2023/7/12 17:17
加载中...