hdu1102 克鲁斯卡尔+并查集
2015-09-08 19:04
337 查看
#include <iostream>
#include <cstdio>
#include <cstring>
#include "algorithm"
using namespace std;
int n,pos;
int op[10000];
int ed[10000];
int dis[10000];
int tmp[10000];
int father[110];
int cmp(int a,int b){return dis[a]<dis[b];}
int Find(int a){return father[a]==a?a:father[a]=Find(father[a]);}
int main(void)
{
int temp,ans;
while(scanf("%d",&n)!=EOF)
{
pos=0;ans=0;
for(int i=0;i<=n;i++)
father[i]=i;
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
{
scanf("%d",&temp);
if(i==j) continue;
op[pos]=i;ed[pos]=j;dis[pos]=temp;tmp[pos]=pos;
pos++;
}
int cot,a,b;
scanf("%d",&cot);
for(int i=0;i<cot;i++)
{
scanf("%d%d",&a,&b);
father[Find(a)]=Find(b);
}
sort(tmp,tmp+pos,cmp);
for(int i=0;i<pos;i++)
{
int a=Find(op[tmp[i]]),b=Find(ed[tmp[i]]);
if(a==b) continue;
father[a]=b;
ans+=dis[tmp[i]];
}
printf("%d\n",ans);
}
}
#include <cstdio>
#include <cstring>
#include "algorithm"
using namespace std;
int n,pos;
int op[10000];
int ed[10000];
int dis[10000];
int tmp[10000];
int father[110];
int cmp(int a,int b){return dis[a]<dis[b];}
int Find(int a){return father[a]==a?a:father[a]=Find(father[a]);}
int main(void)
{
int temp,ans;
while(scanf("%d",&n)!=EOF)
{
pos=0;ans=0;
for(int i=0;i<=n;i++)
father[i]=i;
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
{
scanf("%d",&temp);
if(i==j) continue;
op[pos]=i;ed[pos]=j;dis[pos]=temp;tmp[pos]=pos;
pos++;
}
int cot,a,b;
scanf("%d",&cot);
for(int i=0;i<cot;i++)
{
scanf("%d%d",&a,&b);
father[Find(a)]=Find(b);
}
sort(tmp,tmp+pos,cmp);
for(int i=0;i<pos;i++)
{
int a=Find(op[tmp[i]]),b=Find(ed[tmp[i]]);
if(a==b) continue;
father[a]=b;
ans+=dis[tmp[i]];
}
printf("%d\n",ans);
}
}
相关文章推荐
- 安装OpenvSwitch (ovs)
- Nginx日志管理配置
- alter database datafile offline drop 和 alter tablespace drop datafile 的区别
- CentOS7中firewall防火墙详解和配置,.xml服务配置详解
- jar下载
- python error: [Errno 10054]
- linux常用命令(20):find命令之exec
- bzoj 1054 移动玩具
- Android监听器三种实现方式
- Android集成LeanCloud用户反馈SDK要注意点
- windows下安装vmware10并在虚拟机上安装linux步骤
- hibernate.Query查询
- zoj 2588 Burning Bridges 割边求解
- Intent七大属性详解
- zoj 2588 Burning Bridges 割边求解
- 两个单向链表,判断它们是否相交,若相交,找出它们的第一个公共的结点
- leecode5 Longest Palindromic Substring
- 奇葩问题汇总
- 16个简单实用的.htaccess技巧
- 文章链接