题意:

给出n个节点,再有m条边,这m条边代表从a节点到b节点电缆的长度,现在要你将所有节点都连起来,并且使长度最小

思路:

这是个标准的最小生成树的问题,用prim的时候需要注意的是他有重边,取边最小的那条加入图里就可以了,但是kruskal可以忽略这个问题

代码:

prim:

#include <iostream>
#define maxn 55
#define inf 1<<29
using namespace std; int map[maxn][maxn];
int n,m; void prim()
{
int d[maxn],vis[maxn];
int i,v,j,minn;
for(i=;i<=n;i++){
vis[i]=;
d[i]=map[][i];
}
for(i=;i<=n;i++)
{
minn=inf;
for(j=;j<=n;j++)
if(!vis[j] && d[j]<minn)
{
minn=d[j];
v=j;
}
vis[v]=j;
for(j=;j<=n;j++)
{
if(!vis[j] && map[v][j]<d[j])
d[j]=map[v][j];
}
}
for(d[]=,i=;i<=n;i++)
d[]+=d[i];
cout<<d[]<<endl;
} int main()
{
int i,j,a,b,c;
while(cin>>n,n)
{
cin>>m;
for(i=;i<=n;i++)
{
for(j=;j<=n;j++)
if(i!=j) map[i][j]=inf;
else map[i][j]=;
}
for(i=;i<m;i++)
{
cin>>a>>b>>c;
if(map[a][b]>c) map[a][b]=map[b][a]=c;
}
prim();
}
return ;
}

krusual:

#include <iostream>
#include <algorithm>
using namespace std; typedef struct
{
int s,t,w;
}Edge; Edge edge[];
int n,m,set[]; int cmp(const void * a,const void * b)
{
return (*(Edge *)a).w-(*(Edge *)b).w;
} int find(int x)
{
if(x==set[x]) return x;
int rt=find(set[x]);
set[x]=rt;
return set[x];
} bool Union(int x,int y)
{
int fx=find(x);
int fy=find(y);
if(fx==fy) return ;
set[fx]=fy;
return ;
} void kruskal()
{
int i,sum=;
for(i=;i<=m;i++)
{
if(Union(edge[i].s,edge[i].t))
{
sum+=edge[i].w;
}
}
cout<<sum<<endl;
} int main()
{
int i;
while(cin>>n,n)
{
for(i=;i<=n;i++)
set[i]=i;
cin>>m;
for(i=;i<=m;i++)
{
cin>>edge[i].s>>edge[i].t>>edge[i].w;
}
qsort(edge+,m,sizeof(edge[]),cmp);
kruskal();
}
return ;
}

POJ1287 Networking【最小生成树】的更多相关文章

  1. POJ 1287 Networking (最小生成树)

    Networking Time Limit:1000MS     Memory Limit:10000KB     64bit IO Format:%I64d & %I64u Submit S ...

  2. poj-1287 Networking(Prim)

    题目链接:http://poj.org/problem?id=1287 题目描述: 请先参考关于prim算法求最小生成树的讲解博客:https://www.cnblogs.com/LJHAHA/p/1 ...

  3. POJ 1287 Networking (最小生成树模板题)

    Description You are assigned to design network connections between certain points in a wide area. Yo ...

  4. POJ1287 Networking

    解题思路:Kruskal模板题,重复输入的情况,本题是无向图. 见代码: #include<cstdio> #include<algorithm> #include<cs ...

  5. poj图论解题报告索引

    最短路径: poj1125 - Stockbroker Grapevine(多源最短路径,floyd) poj1502 - MPI Maelstrom(单源最短路径,dijkstra,bellman- ...

  6. 最小生成树 prime poj1287

    poj1287 裸最小生成树 代码 #include "map" #include "queue" #include "math.h" #i ...

  7. 最小生成树练习1(克鲁斯卡尔算法Kruskal)

    今天刷一下水题练手入门,明天继续. poj1861 Network(最小生成树)新手入门题. 题意:输出连接方案中最长的单根网线长度(必须使这个值是所有方案中最小的),然后输出方案. 题解:本题没有直 ...

  8. kuangbin最小生成树专题

    网址:https://vjudge.net/contest/66965#overview 第一题: poj1251 裸最小生成树 #include<iostream> #include&l ...

  9. POJ 1287 Networking (最小生成树)

    Networking 题目链接: http://acm.hust.edu.cn/vjudge/contest/124434#problem/B Description You are assigned ...

随机推荐

  1. sorted 返回字典的所有键

  2. BZOJ2144跳跳棋——LCA+二分

    题目描述 跳跳棋是在一条数轴上进行的.棋子只能摆在整点上.每个点不能摆超过一个棋子.我们用跳跳棋来做一个简单的 游戏:棋盘上有3颗棋子,分别在a,b,c这三个位置.我们要通过最少的跳动把他们的位置移动 ...

  3. BZOJ3172[Tjoi2013]单词——AC自动机(fail树)

    题目描述 某人读论文,一篇论文是由许多单词组成.但他发现一个单词会在论文中出现很多次,现在想知道每个单词分别在论文中出现多少次. 输入 第一个一个整数N,表示有多少个单词,接下来N行每行一个单词.每个 ...

  4. MVC 多语言

    最近项目需要用到多语言. 研究了一下,也参考了很多技术文章. 这里贴一下参考地址:http://www.cnblogs.com/unintersky/p/3969612.html 主要步骤我这里简述一 ...

  5. git pull报“unable to update local ref”解决方案

    使用git pull拉取代码的时候,无法拉取最新代码,报"unable to update local ref"错误. 除了重新clone一份代码外,还可以使用如下解决方案: 1. ...

  6. 自学Python5.3-类和对象的简单操作

    自学Python之路 自学Python5.3-类和对象的简单操作 1. 定义一个类 定义一个类的格式如下: class 类名: 方法列表 举例1 : class Cat: #定义一个Cat类 #属性 ...

  7. Windows Server 2008配置Network Load Balancing(服务群集)

          最近配置SharePoint 2013 WFE 时,客户提到要让多台WFE能load balance,于是研究了下Network Load Balancing.       当把一台服务器 ...

  8. 【BZOJ1558】等差数列(线段树)

    [BZOJ1558]等差数列(线段树) 题面 BZOJ 题解 可以说这道题已经非常毒瘤了 怎么考虑询问操作? 如果直接将一段数分解为等差数列? 太麻烦了.... 考虑相邻的数做差, 这样等差数列变为了 ...

  9. 火狐浏览器高度&制作简单万年历&弹出层

    浏览器高度: FireFox中: document.body.clientWidth ==> BODY对象宽度 document.body.clientHeight ==> BODY对象高 ...

  10. CF1080

    emmmm......ouuan大佬上紫了,我却没打...... 首先吐槽一波家长会和机房锁门,害我只能来打虚拟赛. 写了abcd四题,还是被ouuan大佬吊打....... 264名,应该能上分吧. ...