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. CentOS下安装SVN服务端

    ---恢复内容开始--- 1.使用yum安装 yum install subversion 2.创建仓库 1.创建成功后在svn下面多了几个文件夹. cd /home mkdir svn svnadm ...

  2. 【ICM Technex 2018 and Codeforces Round #463 (Div. 1 + Div. 2, combined) C】 Permutation Cycle

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] p[i] = p[p[i]]一直进行下去 在1..n的排列下肯定会回到原位置的. 即最后会形成若干个环. g[i]显然等于那个环的大 ...

  3. 【Henu ACM Round#20 C】 Eevee

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 处理处所有的字符串可能的样子. 存在map里面就好. [代码] #include <bits/stdc++.h> usi ...

  4. js实现复选框的操作-------Day41

    不知道之前的一篇为什么一直处于审核阶段.难道有哪个词语是敏感词被河蟹了? 无论了,又一次写了这篇,也算是加深记忆吧. 首先要写的是今天在进行表格数据操作时用到的对复选框checkbox的全选和全不选, ...

  5. 【C#】C#托付和事件的实例解说

    using System; namespace delegate_event { // 定义一个猫类 class Cat { // 定义一个名字字段 private string name; // 创 ...

  6. Delegates, Events, and Anonymous Methods 委托、事件与匿名方法

    http://www.cnblogs.com/r01cn/archive/2012/11/30/2795977.html

  7. thinkphp里面的or查询

    thinkphp里面的or查询 whereOr 方法 使用whereOr 方法进行OR 查询: Db::table('think_user') ->where('name','like','%t ...

  8. excel2007去掉方括号及里面的

    获取括号外面的 b2=LEFT(A1,FIND("[",A1)-1) 获取括号里面的 =MID(A2,FIND("(",A2)+1,(FIND(")& ...

  9. VirtualBox中Linux虚拟机与主机共享文件夹

    VirtualBox中Linux虚拟机与主机共享文件夹 一.Linux虚拟机安装增强功能 二.点击虚拟机 设置-->选择 共享文件夹-->点击右侧的带加号的文件夹图标,执行下面的操作1. ...

  10. 如何利用Python词云和wordart可视化工具对朋友圈数据进行可视化展示

    大前天我们通过Python网络爬虫对朋友圈的数据进行了抓取,感兴趣的朋友可以点击进行查看,如何利用Python网络爬虫抓取微信朋友圈的动态(上)和如何利用Python网络爬虫爬取微信朋友圈动态——附代 ...