样例输出4求调
查看原帖
样例输出4求调
1021663
__hjwucj__楼主2024/12/1 17:07
#include <bits/stdc++.h>
#define int long long
#define double long double
#define elif else if
#define fin(x) freopen (x,"r",stdin)
#define fout(x) freopen (x,"w",stdout)
#define rnt register int
#define reg(i,x,y) for (rnt i=(x);i<=(y);++i)
#define Reg(i,x,y) for (rnt i=(y);i>=(x);--i)
#define dec decltype
#define null nullptr
using namespace std;
namespace rwm {inline int read () {int s=0,w=0;char c=getchar ();while (!isdigit (c)) {w|=(c=='-');c=getchar ();}while (isdigit (c)) {s=(s<<1)+(s<<3)+(c^48);c=getchar ();}return w?-s:s;}inline void write (int x) {if (x<0) putchar ( '-'),x=-x;if (x>9) write (x/10);putchar (x%10|48);}inline void writesp (int x) {write (x),putchar (' ');}inline void writeln (int x) {write (x),putchar ('\n');}inline int square (int x) {return x*x;}inline int floor (double x) {return x;}inline int ceil (double x) {return (int)(x+0.5);}inline int gcd (int x,int y) {int z=x%y;while (z) x=y,y=z,z=x%y;return y;}inline int lcm (int x,int y) {return x/gcd (x,y)*y;}};
using namespace rwm;
int n,u,v,w,p[101];
bool edge[101][101];
struct node{
	int k,step;
};
bool vis[101];
inline int bfs (int k)
{
	queue<node> q;
	q.push ({k,0});
	memset (vis,0,sizeof vis);
	vis[k]=1;
	int ans=0;
	while (!q.empty ())
	{
		node f=q.front ();q.pop ();
		for (int i=1;i<=n;i++)
			if (!vis[i]&&edge[f.k][i])
			{
				vis[i]=1;
				node z={i,f.step+1};
				ans+=p[i]*f.step;
				q.push (z);
			}
	}
//	cout<<ans<<' ';
	return ans;
}
signed main ()
{
	cin>>n;
	for (int i=1;i<=n;i++)
	{
		cin>>w>>u>>v;
		p[i]=w;
		if (u) edge[u][i]=edge[i][u]=1;
		if (v) edge[v][i]=edge[i][v]=1;
	}
	int tmp=1<<30; 
	for (int i=1;i<=n;i++) tmp=min (tmp,bfs (i));
	cout<<tmp;
	return 0;
}

2024/12/1 17:07
加载中...