WA64分
查看原帖
WA64分
936249
zhangqiuyanAFOon2024楼主2024/8/3 18:22
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=28000;
int a[N],ans[N],mp[1005][1005];
bool vis[N];
signed main(){
	int n;
	cin>>n;
	for(int i=1;i<=n;i++)
		cin>>a[i],ans[i]=1;
	int u,v,w;
	cin>>u>>v>>w;
	while(~scanf("%lld%lld%lld",&u,&v,&w))
		mp[u+1][v+1]=mp[v+1][u+1]=w+1;
	for(int i=1;i<=n;i++){
		int minn=1e18,id=1145141919810;
		for(int j=1;j<=n;j++)
			if(!vis[j]&&a[j]<minn)
				id=j,minn=a[j];
		vis[id]=1;
		for(int j=1;j<=n;j++)
			if(vis[j]&&mp[id][j]){
				if(a[id]+a[j]==a[mp[id][j]]) ans[mp[id][j]]+=ans[id]*ans[j];
				if(a[id]+a[j]<a[mp[id][j]]) a[mp[id][j]]=a[id]+a[j],ans[mp[id][j]]=ans[id]*ans[j]; 
			} 
	}
	cout<<a[1]<<' '<<ans[1];
	return 0;
}
2024/8/3 18:22
加载中...