记录编号 203787 评测结果 AAAAAAAAAA
题目名称 读书 最终得分 100
用户昵称 Gravatar神利·代目 是否通过 通过
代码语言 C++ 运行时间 0.014 s
提交时间 2015-11-03 17:11:19 内存使用 0.34 MiB
显示代码纯文本
#include<cstdio>
#include<algorithm>
int n,m,u,v,fa[110],w[110],o[110][110];
int ans;
inline int find(int x)
{
	if(fa[x]==x)
	    return x;
	return fa[x]=find(fa[x]);
}
int main()
{
	freopen("reading.in","r",stdin);
	freopen("reading.out","w",stdout);
	scanf("%d%d",&n,&m);
	while(n)
	{
		ans=0;
		for(int i=0;i<n;++i)
		{
			fa[i]=i;
			scanf("%d",&w[i]);
			o[i][0]=0;
		}
		while(m--)
		{
			scanf("%d%d",&u,&v);
			fa[find(v)]=find(u);
		}
		for(int i=0;i<n;++i)
		    o[find(i)][++o[find(i)][0]]=w[i];//注意:数组下表必须写find(i)!
		for(int i=0;i<n;++i)
		    if(o[i][0])
		    {
				std::sort(o[i]+1,o[i]+o[i][0]+1);
				ans+=o[i][1];
				for(int j=2;j<=o[i][0];++j)
					ans+=o[i][j]>>1;
		    }
		printf("%d\n",ans);
		scanf("%d%d",&n,&m);
	}
	//while(1);
}