poj 1251(Kruskal)
来源:互联网 发布:linux如何安装jmeter 编辑:程序博客网 时间:2024/05/17 16:44
//Kruskal 直接套的模板
#include<stdio.h>
#include<algorithm>
using namespace std;
typedef struct
{
int x,y,w;
}Edge;
Edge edge[30*30];
int edgenum,minCost,n;
int father[30];
void makeset()
{
int i;
for(i=0;i<=n;i++)
father[i]=i;
return ;
}
bool cmp(Edge e1, Edge e2) // 边排序
{
return e1.w<e2.w;
}
int findfather(int x)
{
if(x!=father[x])
father[x]=findfather(father[x]);
return father[x];
}
void unionSet(int x,int y)
{
father[x]=y;
return ;
}
void krustal()
{
int i,fa,fb;
makeset();
sort(edge,edge+edgenum,cmp);
for(i=0;i<edgenum;i++)
{
fa=findfather(edge[i].x);
fb=findfather(edge[i].y);
if(fa!=fb)
{
unionSet(fa,fb);
minCost+=edge[i].w;
}
}
return ;
}
int main()
{
int i,j,k,cost;
char v1[5],v2[5];
while(scanf("%d",&n) && n)
{
edgenum=0;
for(i=0;i<n-1;i++)
{
scanf("%s%d",v1,&k);
for(j=0;j<k;j++)
{
scanf("%s%d",v2,&cost);
edge[edgenum].x=v1[0]-'A';
edge[edgenum].y=v2[0]-'A';
edge[edgenum++].w=cost;
}
}
minCost=0;
krustal();
printf("%d\n",minCost);
}
return 0;
}
- poj 1251(Kruskal)
- poj 1251 kruskal
- poj 1251 kruskal
- [kruskal]poj 1251
- [Kruskal] POJ 1251
- [POJ 1251]Jungle Roads Kruskal
- poj 1251 prim or kruskal
- POJ 1251 Jungle Roads (kruskal)
- poj 1251 Jungle Roads【prim & kruskal】
- POJ 1251Jungle Roads(Kruskal)
- POJ 1251 Jungle Roads(Kruskal)
- POJ 2485 Highways Kruskal
- poj 1287 kruskal
- poj 1797 kruskal
- POJ 1861 Network(Kruskal)
- poj 1861 kruskal
- poj 2031 Kruskal
- poj 2395 Kruskal
- How to Compile Android on Ubuntu (12.04)
- Function Prototype
- 插入排序
- const
- 在windows下开发的常见错误——持续更新,不断完善
- poj 1251(Kruskal)
- PPT排版技巧
- MongoDb在C#中查询
- lamp ubuntu
- 彩信平台软件模块清单
- 数据在磁盘上的分布
- c++静态那些事
- 以实践的方式学习C++ &(引用)
- Android-stagefright与opencore对比