POJ 1751Highways Kruskal求解
来源:互联网 发布:淘宝网羊毛衫烟火726 编辑:程序博客网 时间:2024/06/08 22:07
题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=66965#problem/H
题意:修高速公路问题,求最小连通造价,但是会给出一些已经修好了的边,求需要修剪的边。
思路:这题和POJ 2412 Constructing Roads差不多,用Kruskal逐条加边,只是把Kruskal的求sum值改成存储边值就好了。
代码:
#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<vector>using namespace std;struct edge{ int u,v,w; bool operator <(const edge&a)const{ return w<a.w; }}E[600000];int N,M,tot,X[800],Y[800];int vis[751][751],pre[800];vector<int> ans;int find(int x){ int t=x; while(t!=pre[t]) t=pre[t]; while(x!=t) pre[x]=t,x=pre[x]; return t;}void Kruskal(){ ans.clear(); for(int i=0;i<tot;i++){ int fu=find(E[i].u),fv=find(E[i].v); if(fu==fv) continue; pre[fv]=fu;ans.push_back(i);//把求和改成路径就好了 } for(int i=0;i<ans.size();i++){ int k=ans[i]; cout<<E[k].u<<" "<<E[k].v<<endl; }}int main(){ //freopen("D:\\in.txt","r",stdin); while(cin>>N){ for(int i=1;i<=N;i++) scanf("%d %d",X+i,Y+i); memset(vis,0,sizeof(vis)); for(int i=0;i<=N;i++) pre[i]=i; cin>>M; int a,b; for(int i=0;i<M;i++){ scanf("%d %d",&a,&b); vis[a][b]=vis[b][a]=1; pre[find(b)]=find(a); } tot=0; for(int i=1;i<=N;i++) for(int j=1;j<i;j++) if(!vis[i][j]){ int t=(X[i]-X[j])*(X[i]-X[j])+(Y[i]-Y[j])*(Y[i]-Y[j]); E[tot++]=(edge){i,j,t}; } if(tot==0) {cout<<endl;continue;} sort(E,E+tot); Kruskal(); } return 0;}
0 0
- POJ 1751Highways Kruskal求解
- POJ - 1751----Highways(Kruskal)
- poj 1751 Highways(Kruskal)
- POJ 1751 Highways (kruskal)
- POJ 1751 Highways (Kruskal 最小生成树)
- POJ 1751 Highways(Kruskal Algorithm)
- poj 1751 Highways (prim和kruskal)
- POJ 2485 Highways Kruskal
- poj 2485 Highways 【kruskal】
- POJ 2485 Highways (kruskal+prim)
- poj 2485 Highways(Kruskal!)
- poj 2485 Highways(Kruskal)
- POJ-2485-Highways(kruskal)
- POJ 1751 Highways 最小生成树 Kruskal && Prim
- POJ:1751 Highways(最小生成树kruskal算法)
- Poj --1751 highways (最小生成树,kruskal算法)
- ZOJ 2048 / POJ 2485 Highways ( kruskal )
- poj 2485Highways(最小生成树 Kruskal)
- LaTeX新人教程,30分钟从完全陌生到基本入门
- HashMap详解
- setsockopt()用法
- 高性能Mysql——Mysql的整体架构简介
- Merge k Sorted Lists
- POJ 1751Highways Kruskal求解
- Java EE 7与Angular JS(1)
- 分布式编程初体验
- 实验楼的laravel 4.2 blog 教程(七)完结
- 我是如何从0开始,在23天里完成一款Android游戏开发的 – Part 1 – 开篇与前2天
- iOS学习过程回顾
- GIS信息关联规则挖掘——Apriori算法的实现(上)
- Aexi(5)-Glyph的事件处理
- 基于Junit3.8和Junit4.x的单元测试详解