求助!!!WA#1(悬赏一关)
查看原帖
求助!!!WA#1(悬赏一关)
747778
G_HERO_楼主2023/7/16 15:34
#include<bits/stdc++.h>
#define N 1050
using namespace std;
int n,g[N][N],f[N];
int zy[N];
int a,b,c;
bool v[N];
struct hero{int d,val;};
bool operator < (hero a,hero b){return a.val>b.val;}
priority_queue <hero> q;
int main()
{
	scanf("%d",&n);
	for(int i=1;i<=n;i++)
	{
		scanf("%d",&f[i]);
		q.push((hero){i,f[i]});
		zy[i]=1;
	}
	while(scanf("%d%d%d",&a,&b,&c)!=EOF)g[a+1][b+1]=g[b+1][a+1]=c+1;
	while(!q.empty())
	{
		hero now=q.top();
		q.pop();
		int x=now.d;
		if(v[x])continue;
		v[x]=1;
		for(int i=1;i<=n;i++)
		{
			if(!v[i])continue;
			if(f[i]+f[x]==f[g[x][i]])zy[g[x][i]]+=zy[x]*zy[i];
			if(f[i]+f[x]<f[g[x][i]])
			{
				f[g[x][i]]=f[x]+f[i];
				zy[g[x][i]]=zy[x]*zy[i];
				q.push((hero){i,zy[i]});
			}
		}
	}
	printf("%d %d\n",f[1],zy[1]);
	return 0;
}
2023/7/16 15:34
加载中...