Networking
Time Limit: 1000MS   Memory Limit: 10000K
Total Submissions: 6432   Accepted: 3488

Description

You are assigned to design network connections between certain points in a wide area. You are given a set of points in the area, and a set of possible routes for the cables that may connect pairs of points. For each possible route between two points, you are given the length of the cable that is needed to connect the points over that route. Note that there may exist many possible routes between two given points. It is assumed that the given possible routes connect (directly or indirectly) each two points in the area. 
Your task is to design the network for the area, so that there is a connection (direct or indirect) between every two points (i.e., all the points are interconnected, but not necessarily by a direct cable), and that the total length of the used cable is minimal.

Input

The input file consists of a number of data sets. Each data set defines one required network. The first line of the set contains two integers: the first defines the number P of the given points, and the second the number R of given routes between the points. The following R lines define the given routes between the points, each giving three integer numbers: the first two numbers identify the points, and the third gives the length of the route. The numbers are separated with white spaces. A data set giving only one number P=0 denotes the end of the input. The data sets are separated with an empty line. 
The maximal number of points is 50. The maximal length of a given route is 100. The number of possible routes is unlimited. The nodes are identified with integers between 1 and P (inclusive). The routes between two points i and j may be given as i j or as j i. 

Output

For each data set, print one number on a separate line that gives the total length of the cable used for the entire designed network.

Sample Input

1 0

2 3
1 2 37
2 1 17
1 2 68 3 7
1 2 19
2 3 11
3 1 7
1 3 5
2 3 89
3 1 91
1 2 32 5 7
1 2 5
2 3 7
2 4 8
4 5 11
3 5 10
1 5 6
4 2 12 0

Sample Output

0
17
16
26

Source

这道题其实就是求mst,贴AC代码:


#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std; const int MAXN=55;
const int MAXM=1e6;
int father[MAXN];
struct Edge
{
int u,v,w;
}edge[MAXM];
int tot;
void addedge(int u,int v,int w)
{
edge[tot].u=u;
edge[tot].v=v;
edge[tot++].w=w;
}
int find_set(int x)
{
if(father[x]==-1)
return x;
else
return father[x]=find_set(father[x]);
}
bool cmp(Edge x,Edge y)
{
return x.w<y.w;
}
int Kruskal(int n)
{
memset(father,-1,sizeof(father));
sort(edge,edge+tot,cmp);
int ans=0;
int num=0;
for(int i=0;i<tot;i++)
{
int u=edge[i].u;
int v=edge[i].v;
int w=edge[i].w;
int fa1=find_set(u);
int fa2=find_set(v);
if(fa1!=fa2)
{
ans+=w;
num++;
father[fa1]=fa2;
}
if(num==n-1)
break;
}
if(num<n-1)
return -1;
else
return ans;
}
int main()
{
int n,m;
while(scanf("%d%d",&n,&m))
{
if(n==0)
break;
tot=0;
int u,v,w;
for(int i=0;i<m;i++)
{
scanf("%d%d%d",&u,&v,&w);
u--;
v--;
addedge(u,v,w);
}
int ans=Kruskal(n);
printf("%d\n",ans);
}
return 0;
}

POJ_1287_mst的更多相关文章

随机推荐

  1. HTML5里autofocus属性

    转载:http://www.webhek.com/html5-autofocus/ HTML5给我们带来了一大堆神奇的东西.以前需要用JavaScript和Flash完成的任务,例如表单校验,INPU ...

  2. js类型判断

    console.log('---------------------'); var a="string"; console.log(a); //string var a=1; co ...

  3. (转)A Beginner's Guide To Understanding Convolutional Neural Networks Part 2

    Adit Deshpande CS Undergrad at UCLA ('19) Blog About A Beginner's Guide To Understanding Convolution ...

  4. read the python code and predict the results --- from <Learn Python The Hard Way>

    import random from urllib import urlopen import sys WORD_URL = "http://learncodethehardway.org/ ...

  5. EXTJS 5.0 资料

    http://blog.csdn.net/sushengmiyan/article/category/2435029

  6. nginx无法启动: libpcre.so.1/libpcre.so.0: cannot open shared object file解决办法

    NGINX启动时提示错误: /usr/local/nginx/sbin/nginx -t/usr/local/nginx/sbin/nginx: error while loading shared ...

  7. nginx配置-http和https

    #user nobody;worker_processes 1;error_log logs/error.log;#error_log logs/error.log notice;#error_log ...

  8. 常规SQL注入脚本

    一:union报错注入 猜字段长度:order by 28 先显示位http://127.0.0.1/sql.php?cmd=-1 UNION SELECT 1,2,3,4,5,6,7,8,9 当前数 ...

  9. 【转】ASP.NET Cookies简单应用 记住用户名和密码

    不要试图给Password类型的TextBox赋值! 在asp.net中,不要试图给Password类型的TextBox控件赋值! 无论是在设计或是运行时,都不可以的. 猜测的原因是,password ...

  10. nodejs 任务调度使用

    使用的模块 node-schedule的使用 例子: 1:确定时间 var schedule = require("node-schedule");console.log(&quo ...