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. UVALive 2659 数独 DLX模板

    建图: 从1到16枚举所有的行.列上放的数. 代码: #include <iostream> #include <cstdio> #include <cstring> ...

  2. Unity ContextMenu特性

    有时候我们需要在编辑器下,频繁的做一些操作,比如说在不同的位置创建物体,一个个的修改坐标显然有点繁琐 这时候ContextMenu就派上用处了 例:利用 LineRenderer 画圆,我们不可能一个 ...

  3. 题解 CF911D 【Inversion Counting】

    这是一道看似复杂其实也不简单的思维题. 其实思路很明显. 因为这道题的数据范围比较大,有1e5的询问,如果暴力(像我考场上那样打平衡树)的话可以做到$mnlogn$. 但那样也是稳T. 经过思考之后我 ...

  4. Eclipse StartExplorer插件

    http://www.cnblogs.com/wuxiang/p/5489961.html

  5. POJ——T 3728 The merchant

    http://poj.org/problem?id=3728 Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 5068   A ...

  6. 洛谷 P1071 潜伏者

    P1071 潜伏者 题目描述 R 国和 S 国正陷入战火之中,双方都互派间谍,潜入对方内部,伺机行动.历尽艰险后,潜伏于 S 国的 R 国间谍小 C 终于摸清了 S 国军用密码的编码规则: 1. S ...

  7. [Python] Slice the data with pandas

    For example we have dataframe like this: SPY AAPL IBM GOOG GLD 2017-01-03 222.073914 114.311760 160. ...

  8. Linux查看当前正在执行的进程

    Linux查看当前正在执行的进程 youhaidong@youhaidong-ThinkPad-Edge-E545:~$ ps PID TTY TIME CMD 2576 pts/0 00:00:00 ...

  9. cocos2d-x 3.0正式版 vs2013配置

    cocos2d-x 3.0正式版与之前的版本号差异较大,曾经的教程非常多都不使用了. 1.从cocos2d-x官网http://www.cocos2d-x.org下载3.0版的压缩包,随便解压一个位置 ...

  10. Function的一些结论与eval函数.

    1.1 函数的创建方式 1 函数声明 2 函数表达式 3 new Function // 1 function foo() {} // 2 var foo = function() {}; // 3 ...