练习四 1001
来源:互联网 发布:杭州真趣网络 编辑:程序博客网 时间:2024/04/30 09:46
题意:
给出n个城市间的距离,和m对已经联通的城市,问最少需要建设多少道路把所有城市联通。
思路:
最小生成树问题,注意在把城市之间的距离转化成邻接表时避免超时,把已经联通的城市合并。
只需要取矩阵中j>i的部分。
代码:
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
int p[10010],n,m,k;
struct road
{
int s,e,w;
}r[10010];
bool cmp(road a,road b)
{ return a.w<b.w; }
int find(int x)
{ return p[x]==x?x:p[x]=find(p[x]); }
int kru()
{
int sum=0;
for(int i=0;i<k;i++)
{
int x=find(r[i].s),y=find(r[i].e);
if(x!=y)
{
p[x]=y;
sum+=r[i].w;
}
}
return sum;
}
int main()
{
while(cin>>n){
k=0;
for(int i=1;i<=n;i++)
{
p[i]=i;
for(int j=1;j<=n;j++)
{
int q;
cin>>q;
if(j>i)
{
r[k].s=i;
r[k].e=j;
r[k].w=q;
k++;
}
}
}
cin>>m;
while(m--)
{
int x,y;
cin>>x>>y;
x=find(x);
y=find(y);
if(x!=y) p[x]=y;
}
sort(r,r+k,cmp);
cout<<kru()<<endl;
}
return 0;
}4 1001
题意:
给出n个城市间的距离,和m对已经联通的城市,问最少需要建设多少道路把所有城市联通。
思路:
最小生成树问题,注意在把城市之间的距离转化成邻接表时避免超时,把已经联通的城市合并。
只需要取矩阵中j>i的部分。
代码:
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
int p[10010],n,m,k;
struct road
{
int s,e,w;
}r[10010];
bool cmp(road a,road b)
{ return a.w<b.w; }
int find(int x)
{ return p[x]==x?x:p[x]=find(p[x]); }
int kru()
{
int sum=0;
for(int i=0;i<k;i++)
{
int x=find(r[i].s),y=find(r[i].e);
if(x!=y)
{
p[x]=y;
sum+=r[i].w;
}
}
return sum;
}
int main()
{
while(cin>>n){
k=0;
for(int i=1;i<=n;i++)
{
p[i]=i;
for(int j=1;j<=n;j++)
{
int q;
cin>>q;
if(j>i)
{
r[k].s=i;
r[k].e=j;
r[k].w=q;
k++;
}
}
}
cin>>m;
while(m--)
{
int x,y;
cin>>x>>y;
x=find(x);
y=find(y);
if(x!=y) p[x]=y;
}
sort(r,r+k,cmp);
cout<<kru()<<endl;
}
return 0;
}
0 0
- 练习四1001
- 练习四 1001
- 练习四 1001
- 练习四1001畅通工程
- 练习四
- 2016sdau课程练习专题四 1001
- 数据库练习四
- 查询练习(四)
- Scala练习(四)
- 听课练习(四)
- 笔试练习四
- 笔试练习四
- 练习四 1004
- 练习四 1003
- 练习四 1002
- 练习四 1005
- 练习四 1002
- 练习四 1003
- char*,const char*,string相互转换
- jsp:forward jsp:include传中文参数乱码问题的解决方法
- XML 和 ini作为配置文件优缺点
- java.lang.management包——实现监视和管理 Java 虚拟机
- Angularjs 的 ngInfiniteScroll 的使用方法
- 练习四 1001
- 排序算法总结(3)——插入排序
- Dogpile效应以及solution
- java中this语句来调用其他构造方法的规则
- C/C++经典面试题
- QT浮点型输出问题
- 在ubuntu 15.10下安装VMware Tools
- python _ underscore variable
- HDU - 1232 畅通工程(并查集水题)