给出m个城镇,两两间距离,问最短路能全连通的路程。
最小生成树,基本并查集问题。贪心,总取最短的路尝试,如果两点不在一起则连通。
kruskal 算法。
#include<iostream>
using namespace std;
#include<vector>
#include<memory.h>
#include<algorithm>
struct Road
{
int start;
int end;
int dis;
};
bool compare(Road a,Road b)
{
return a.dis<b.dis;
}
vector<Road> road;
int city[101];
int find(int pos)
{
if(city[pos]==-1)
return pos;
return city[pos]=find(city[pos]);
}
int merge(int a,int b)
{
int roota=find(a);
int rootb=find(b);
if(roota==rootb)
return 0;
city[roota]=rootb;
return 1;
}
int kruskal(vector<Road> road)
{
int sum = 0;
int root1;
int root2;
sort(road.begin(),road.end(),compare);
for(int i=0;i<road.size();i++)
{
root1 = find(road[i].start);
root2 = find(road[i].end);
if(root1!=root2)
{
merge(road[i].start,road[i].end);
sum+=road[i].dis;
}
}
return sum;
}
int main()
{
int n;
while(1)
{
cin>>n;
road.clear();
memset(city,-1,sizeof(city));
if(n==0)
break;
n=n*(n-1)/2;
while(n--)
{
Road r;
cin>>r.start;
cin>>r.end;
cin>>r.dis;
road.push_back(r);
}
cout<<kruskal(road)<<endl;
}
}
分享到:
相关推荐
机械设计考研复试真题参考资料,最新2022届考研复试可用。上海工程技术大学车辆工程复试参考资料
软件工程复试资料软件工程复试资料软件工程复试资料软件工程复试资料软件工程复试资料软件工程复试资料软件工程复试资料软件工程复试资料软件工程复试资料软件工程复试资料软件工程复试资料软件工程复试资料软件工程...
哈工程考研数据库复试资料,分享给大家。
软件工程复试资料。。软件工程复试资料。可以参考一下,
中石油(华东)考研控制工程专业复试科目过程控制工程的复习资料
哈工程复试计算机所用的材料,分享出来,供给大家学习使用,希望大家也能成功上岸,加油。 哈工程复试计算机所用的材料,分享出来,供给大家学习使用,希望大家也能成功上岸,加油。 哈工程复试计算机所用的材料,...
东北大学 计算机复试 软件工程 ppt
传媒大学 复试笔试 软件工程2004——2016
哈工程本科上课所用的课件 可供考研的同学参考
软件工程考研 软件工程复试 软件工程 软工复习资料
南理工数据库与软件工程复试资料 上课课件及试卷
南京信息工程大学软件工程复试思维导图
软件工程简答题(东南复试)软件工程简答题(东南复试)软件工程简答题(东南复试)软件工程简答题(东南复试)软件工程简答题(东南复试)
北京理工大学光学工程考研复试真题06-09,照片,可以针对本真题对考研复试有针对性的准备,北理工光学光学工程,可以看看自己学的怎么样哦
复试科目《网络工程》参考资料,大家可以下载看下,加油! 复试科目《网络工程》参考资料,大家可以下载看下,加油!
郑州大学计算机专业历年复试专业课真题,408专业,944专业 软件工程专业复试真题 郑州大学英语复试题目
东北大学软件工程复试大全软件工程.doc
西北大学软件工程考研复试资料,包括西北大学软件工程专业上机题目及复试笔试数据库,计算机网络及面试指导
北京理工大学光学工程考研复试真题02-05,照片,可以针对本真题对考研复试有针对性的准备,北理工光学光学工程,可以看看自己学的怎么样哦
东北大学软件工程复试大全软件工程样本.doc