poj2075 Tangled in Cables 最小生成树+map,kruskal
2014-07-11 23:59
357 查看
题目链接:http://poj.org/problem?id=2075
思路:最小生成树问题,只是点集是以字符串的形式给出的,使用一个map建立string到int的映射就好了。还是kruskal算法。kruskal算法用熟了不想试着写prim了。。。
思路:最小生成树问题,只是点集是以字符串的形式给出的,使用一个map建立string到int的映射就好了。还是kruskal算法。kruskal算法用熟了不想试着写prim了。。。
///2014.7.11 ///poj2075 //Accepted 780K 16MS G++ 1546B 2014-07-11 23:39:33 /* *最小生成树 + map */ #include <iostream> #include <string> #include <cstdio> #include <algorithm> #include <map> using namespace std; int n,m; double has,need; struct Vdge { int x,y; double l; }; Vdge vdge[50000]; bool cmp(Vdge a,Vdge b){ return a.l<b.l; } int dSet[300]; int find(int x){ while( x != dSet[x] ) x = dSet[x]; return x; } bool judge(int x,int y){ int fx = find(x); int fy = find(y); if( fx==fy ) return false; else{ dSet[fx] = fy; return true; } } void init(){ map<string,int> name; cin>>has>>n; string nname; for(int i=0 ; i<n ; i++){ cin>>nname; name[nname] = i; } cin>>m; string name1,name2; double temp; for(int i=0 ; i<m ; i++){ cin>>name1>>name2>>temp; vdge[i].x = name[name1]; vdge[i].y = name[name2]; vdge[i].l = temp; } for(int i=0 ; i<n ; i++) dSet[i] = i; sort(vdge,vdge+m,cmp); need = 0; } void kruskal(){ int i=0,j=0; while( i<n-1 ){ if( judge(vdge[j].x,vdge[j].y) ){ need += vdge[j].l; i++; } j++; } } int main(){ // freopen("in","r",stdin); // freopen("out","w",stdout); init(); // out(); kruskal(); if( need <= has ) cout<<"Need "<<need<<" miles of cable"<<endl; else cout<<"Not enough cable"<<endl; return 0; }
相关文章推荐
- zoj 2326 Tangled in Cables【最小生成树 kruskal && prim】
- zoj 2326 Tangled in Cables 最小生成树
- POJ 2075 Tangled in Cables(最小生成树 kruscal)
- POJ 2075 Tangled in Cables(最小生成树)
- POJ 2075 Tangled in Cables 最小生成树
- POJ 2075 Tangled in Cables 最小生成树
- poj 2075 -- Tangled in Cables(最小生成树)
- ZOJ 2326 Tangled in Cables(最小生成树--prime)
- POJ 2075 Tangled in Cables(最小生成树)
- Tangled in Cables(Kruskal+map容器处理字符串)
- poj 2075 Tangled in Cables【最小生成树+字符串处理】
- 模板整理——图论·最小生成树·Kruskal
- poj2395 Kruskal最小生成树
- hdoj 1875 畅通project再续【最小生成树 kruskal && prim】
- Kruskal,最小生成树,树链剖分,LCA(邦德,UVA 11354)
- [置顶] 有关最小生成树Kruskal正确性的证明与研究
- 最小生成树算法(下)——Kruskal(克鲁斯卡尔)算法
- BZOJ.2177.曼哈顿最小生成树(Kruskal)
- POJ1251 || ZOJ1406 kruskal求最小生成树
- 最小生成树(kruskal模版 模板)