Ice_cream’s world III

Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)

Total Submission(s): 1237    Accepted Submission(s): 408

Problem Description
ice_cream’s world becomes stronger and stronger; every road is built as undirected. The queen enjoys traveling around her world; the queen’s requirement is like II problem, beautifies the roads, by which there are some ways from every
city to the capital. The project’s cost should be as less as better.
 
Input
Every case have two integers N and M (N<=1000, M<=10000) meaning N cities and M roads, the cities numbered 0…N-1, following N lines, each line contain three integers S, T and C, meaning S connected with T have a road will cost C.
 
Output
If Wiskey can’t satisfy the queen’s requirement, you must be output “impossible”, otherwise, print the minimum cost in this project. After every case print one blank.
 
Sample Input
2 1
0 1 10 4 0
 
Sample Output
10 impossible
 
Author
Wiskey
浮在水面上的小岛要连通,求最少花费,假设没有,则输出impossible。
代码1【克鲁斯卡尔】:


#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<algorithm>
#include<iostream>
#include<cmath>
using namespace std; int n,m;
int pre[1010];
struct node{
int u;
int v;
int w;
};
node sb[10010]; bool cmp(node a,node b)
{
return a.w<b.w;
} int find(int x)
{
if(pre[x]==x)
return x;
return pre[x]=find(pre[x]);
} bool join(int x,int y)
{
int f1,f2;
f1=find(x);
f2=find(y);
if(f1==f2)
return false;
if(f1!=f2)
pre[f1]=f2;
return true;
} int main()
{
int sum;
while(scanf("%d%d",&n,&m)!=EOF)
{
sum=0;
for(int i=0;i<n;i++)
pre[i]=i;
for(int i=0;i<m;i++)
scanf("%d%d%d",&sb[i].u,&sb[i].v,&sb[i].w);
sort(sb,sb+m,cmp);
for(int i=0;i<m;i++)
{
if(join(sb[i].u,sb[i].v))
sum+=sb[i].w;
}
int cnt=0;
for(int i=0;i<n;i++)
{
if(pre[i]==i)
cnt++;
}
if(cnt>1)
printf("impossible\n\n");
else
printf("%d\n\n",sum);
}
return 0;
}

代码2【普利姆】:

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<iostream>
using namespace std;
const int INF= 0x3f3f3f3f;
const int maxb=1010;
int map[maxb][maxb];
int vis[maxb];
int n,m,sum;
int a,b,c; void prime()
{
int i,j,k,dis[maxb];
int min;
memset(vis,0,sizeof(vis));
int ans=1;
vis[0]=1;
for(i=0;i<n;i++)
dis[i]=map[0][i];
for(i=0;i<n;i++)
{
min=INF;
for(j=0;j<n;j++)
if(!vis[j]&&min>dis[j])
min=dis[k=j];
if(min==INF)
{
if(ans==n)
printf("%d\n",sum);
else
puts("impossible");
break;
}
sum+=min;
vis[k]=1;
ans++;
for(j=0;j<n;j++)
if(!vis[j]&&dis[j]>map[k][j])
dis[j]=map[k][j];
}
} int main()
{
while(scanf("%d%d",&n,&m)!=EOF)
{
memset(map,INF,sizeof(map));
sum=0;
while(m--)
{
scanf("%d%d%d",&a,&b,&c);
if(map[a][b]>c)
map[a][b]=map[b][a]=c;
}
//getchar();
prime();
//getchar();
puts("");
}
return 0;
}




hdoj 2122 Ice_cream’s world III【最小生成树】的更多相关文章

  1. hdoj 2122 Ice_cream’s world III

    并查集+最小生成树 Ice_cream’s world III Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 ...

  2. HDU 2122 Ice_cream’s world III【最小生成树】

    解题思路:基础的最小生成树反思:不明白为什么i从1开始取,就一直WA,难道是因为村庄的编号是从0开始的吗 Ice_cream’s world III Time Limit: 3000/1000 MS ...

  3. Ice_cream’s world III(prime)

    Ice_cream’s world III Time Limit : 3000/1000ms (Java/Other)   Memory Limit : 32768/32768K (Java/Othe ...

  4. hdoj 2121 Ice_cream’s world II 【没有最低树的根节点】

    称号:pid=2121" target="_blank">hdoj 2121 Ice_cream's world II 题意:题目是一道躶题,给n个点,m条边的有向 ...

  5. Ice_cream’s world III

    Ice_cream's world III Time Limit : 3000/1000ms (Java/Other)   Memory Limit : 32768/32768K (Java/Othe ...

  6. A - Ice_cream’s world III

    Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit Status Pract ...

  7. HDOJ.2064 汉诺塔III

    汉诺塔III Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submis ...

  8. hdoj 2120 Ice_cream's world I【求成环数】

    Ice_cream's world I Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Othe ...

  9. HDOJ 2120 Ice_cream's world I

    Ice_cream's world I ice_cream's world is a rich country, it has many fertile lands. Today, the queen ...

随机推荐

  1. caioj 1413 动态规划4:打鼹鼠

    记住一定要区分n和m分别代表什么,我已经因为这个两道题浪费很多时间了 然后这个道题有点类似最长上升子序列n平方的做法,只是判断的条件不同而已 #include<cstdio> #inclu ...

  2. struts2.x + Tiles2.x读取多个xml 配置文件

    在web.xml中配置如下即可: <context-param> <param-name>org.apache.tiles.impl.BasicTilesContainer.D ...

  3. vmware下minimum安装centos后配置网络

    原文出处:http://www.cnblogs.com/lanhj/p/3785553.html 昨晚用vmware安装centos时选择minimum安装,目的熟悉基本配置. 上来想yum一个vim ...

  4. C++ priority_queue的使用 & Java PriorityQueue

    刚刚那道BST的题目,也用到了priority_queue,那是那个没有定义比较函数. 那么下面这个,就要定义比较函数. 它的模板声明带有三个参数,priority_queue<Type, Co ...

  5. 開始EEPlat之旅

    怎样開始EEPlat之旅 EEPlat分为社区版和商业版:功能上分为企业版和PaaS版.下面为社区企业版的開始之旅. 第一步:安装project,有两种:war包和代码project.(眼下googl ...

  6. 同学们,OpenCV出3.0了,速去围观!

    OpenCV3.0 OpenCV > NEWS > OpenCV 3.0 2015-06-04 With a great pleasure and great relief OpenCV ...

  7. Ubuntu系统下的Mysql安装与使用

    摘要 在本篇博文中.笔者将从基础出发.介绍Mysql在Linux环境下的安装和基本使用命令,仅适用于Mysql刚開始学习的人.大牛请绕道-- 安装Mysql数据库 这里介绍最最简单的安装方式,至于编译 ...

  8. quartz 持久化 数据库表

    此处只包括配置数据库操作 quartz 持久化数据库表格字段解释建表,SQL语句在dbTables文件夹中可以找到,介绍下我们开发主要使用到的表: (版本不一样,可能数据库表也不一样,这里使用2.2. ...

  9. Introspector

    import java.beans.BeanInfo; import java.beans.Introspector; import java.beans.PropertyDescriptor; im ...

  10. pythong中的全局变量的调用和嵌套函数中变量的使用

    全局变量调用:想要在自定义的函数中使用全局变量,就得要在函数用关键字global声明,然后就可以对全局变量进行修改.嵌套函数中的变量的调用:要在嵌套的变量中,使用nonlocal的声明'''num = ...