poj1251解题报告
2015-06-19 21:46
302 查看
题目大意:给你一个AOE网络,表示一个森林,有结点权(村庄编号),也有边权(费用),保持森林中每个村子都有道路相通,且维修所需要的最少money。
解题思路:MST最小生成树,kruska算法~~
没什么要注意的,我的算法改自刘汝佳的模板
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
const int maxn=1000;
int u[maxn],v[maxn],w[maxn],p[maxn],r[maxn],n,m;
int cmp(const int i,const int j) {return w[i]<w[j];}
int find(int x) {return p[x]==x?x:p[x]=find(p[x]);}
int kruskal()
{
int cou=0,x,y,i,ans=0;
for(i=0;i<n;i++) p[i]=i;
for(i=0;i<m;i++) r[i]=i;
sort(r,r+m,cmp);
for(i=0;i<m;i++)
{
int e=r[i];x=find(u[e]);y=find(v[e]);
if(x!=y) {ans += w[e];p[x]=y;cou++;}
}
if(cou<n-1) ans=0;
return ans;
}
int main()
{
//freopen("1.txt","r",stdin);
while(cin>>n)
{
m=0;
if(n==0) break;
for(int i =0;i<n-1;i++)
{
char a;
cin>>a;
int tmp;
cin>>tmp;
for(int j=0;j<tmp;j++)
{
char b;
cin>>b;
int tmp1;
cin>>tmp1;
u[m]=a-'A';
v[m]=b-'A';
w[m++]=tmp1;
}
}
cout<<kruskal()<<endl;
}
}
解题思路:MST最小生成树,kruska算法~~
没什么要注意的,我的算法改自刘汝佳的模板
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
const int maxn=1000;
int u[maxn],v[maxn],w[maxn],p[maxn],r[maxn],n,m;
int cmp(const int i,const int j) {return w[i]<w[j];}
int find(int x) {return p[x]==x?x:p[x]=find(p[x]);}
int kruskal()
{
int cou=0,x,y,i,ans=0;
for(i=0;i<n;i++) p[i]=i;
for(i=0;i<m;i++) r[i]=i;
sort(r,r+m,cmp);
for(i=0;i<m;i++)
{
int e=r[i];x=find(u[e]);y=find(v[e]);
if(x!=y) {ans += w[e];p[x]=y;cou++;}
}
if(cou<n-1) ans=0;
return ans;
}
int main()
{
//freopen("1.txt","r",stdin);
while(cin>>n)
{
m=0;
if(n==0) break;
for(int i =0;i<n-1;i++)
{
char a;
cin>>a;
int tmp;
cin>>tmp;
for(int j=0;j<tmp;j++)
{
char b;
cin>>b;
int tmp1;
cin>>tmp1;
u[m]=a-'A';
v[m]=b-'A';
w[m++]=tmp1;
}
}
cout<<kruskal()<<endl;
}
}
相关文章推荐
- HDU-1671
- serializer.exclude("*.class");的效果
- 用Netty解析Redis网络协议
- 用Netty解析Redis网络协议
- oracle ora-01652/oracle表空间
- php xss过滤
- Redis2.8的安装教程,linux下
- 测试与调试
- 第七项——测试程序
- redis cluster安装部署(测试环境)
- Java程序员的Golang入门指南(上)
- 3.2 柱状图
- Java程序员的Golang入门指南(上)
- LeetCode——Pascal's Triangle
- [nowCoder] 子数组最大乘积
- Unbutu使用相关问题记录收集
- 浅析网站 APP 登录界面设计
- mysql性能优化的21个实践和使用索引
- 孤独是你的必修课 By 卢思浩_Kevin
- 杨辉三角——关于生成器的理解