传送门:

http://poj.org/problem?id=1251

http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=406

POJ RE死了,改成cin救过了。。不过ZOJ原来的就能过,估计是POJ的数据多了个空格什么的。

1.prim

#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std; const int MAXN=27;
const int INF=99999;
int dis[MAXN];
int map[MAXN][MAXN];
int n;
void prim()
{
bool vis[MAXN]={0}; for(int i=0;i<n;i++)
dis[i]=INF; int cur=0;
vis[cur]=1;
dis[cur]=0; for(int i=0;i<n;i++)
{
int mini=INF;
for(int j=0;j<n;j++)
if(!vis[j] && map[cur][j] !=INF && dis[j] > map[cur][j])//先选出地图上权值小的
dis[j]=map[cur][j]; for(int j=0;j<n;j++)
if(!vis[j] && mini> dis[j])
mini=dis[cur=j];
vis[cur]=1;
} } int main()
{
while(scanf("%d",&n),n)
{
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
map[i][j]=INF; for(int i=0;i < n-1;i++)
{
char temp;
int from,len,to,cost;
cin>>temp>>len;
from=temp-'A';
while(len--)
{
cin>>temp>>cost;
to=temp-'A';
map[from][to]=map[to][from]=cost;
} }
prim();
int sum=0;
for(int i=0;i<n;i++)
sum+=dis[i];
printf("%d\n",sum);
} return 0;
}

下面是ZOJ AC 但是 POJ RE的就是输入格式不同。

#include<cstdio>
#include<cstring>
const int MAXN=27;
const int INF=99999;
int dis[MAXN];
int map[MAXN][MAXN];
int n;
void prim()
{
bool vis[MAXN]={0}; for(int i=0;i<n;i++)
dis[i]=INF; int cur=0;
vis[cur]=1;
dis[cur]=0; for(int i=0;i<n;i++)
{
int mini=INF;
for(int j=0;j<n;j++)
if(!vis[j] && map[cur][j] !=INF && dis[j] > map[cur][j])//先选出地图上权值小的
dis[j]=map[cur][j]; for(int j=0;j<n;j++)
if(!vis[j] && mini> dis[j])
mini=dis[cur=j];
vis[cur]=1;
} } int main()
{
while(scanf("%d",&n),n)
{
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
map[i][j]=INF; for(int i=0;i < n-1;i++)
{
getchar();
char temp;
int from,len,to,cost;
scanf("%c %d",&temp,&len);
from=temp-'A';
for(int j=0;j<len;j++)
{
scanf(" %c %d",&temp,&cost);
to=temp-'A';
map[to][from]=map[from][to]=cost;
} }
prim();
int sum=0;
for(int i=0;i<n;i++)
sum+=dis[i];
printf("%d\n",sum);
} return 0;
}

方法2   kruskal

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
const int MAXN=28;
const int INF=99999;
int dis[MAXN];
int n,city_cnt,sum;
int fa[MAXN]; struct city
{
int x,y;
int cost;
}a[MAXN*MAXN]; bool operator <(const city &x,const city &y)
{
return x.cost<y.cost;
} int find(int cur)
{
return fa[cur]==cur? cur: fa[cur]=find(fa[cur]);
} int main()
{
while(scanf("%d",&n),n)
{ sum=city_cnt=0;
for(int i=0;i < n-1;i++)
{
char temp;
int from,num,to,cost;
cin>>temp>>num;
from=temp-'A';
while(num--)
{
cin>>temp>>cost;
to=temp-'A';
a[city_cnt].x=from;
a[city_cnt].y=to;
a[city_cnt++].cost=cost;
} } sort(a,a+city_cnt);
for(int i=0;i<n;i++)
fa[i]=i; for(int i=0;i<city_cnt;i++)
{
int root_x=find(a[i].x);
int root_y=find(a[i].y);
if(root_x!=root_y)
{
sum+=a[i].cost;
fa[root_x]=root_y;
}
}
printf("%d\n",sum);
} return 0;
}

POJ 1251 Jungle Roads (zoj 1406) MST的更多相关文章

  1. poj 1251 Jungle Roads (最小生成树)

    poj   1251  Jungle Roads  (最小生成树) Link: http://poj.org/problem?id=1251 Jungle Roads Time Limit: 1000 ...

  2. POJ 1251 Jungle Roads - C语言 - Kruskal算法

    Description The Head Elder of the tropical island of Lagrishan has a problem. A burst of foreign aid ...

  3. POJ 1251 Jungle Roads (prim)

    D - Jungle Roads Time Limit:1000MS     Memory Limit:10000KB     64bit IO Format:%I64d & %I64u Su ...

  4. POJ 1251 Jungle Roads(最小生成树)

    题意  有n个村子  输入n  然后n-1行先输入村子的序号和与该村子相连的村子数t  后面依次输入t组s和tt s为村子序号 tt为与当前村子的距离  求链接全部村子的最短路径 还是裸的最小生成树咯 ...

  5. POJ 1251 Jungle Roads(Kruskal算法求解MST)

    题目: The Head Elder of the tropical island of Lagrishan has a problem. A burst of foreign aid money w ...

  6. POJ 1251 Jungle Roads (最小生成树)

    题目: Description The Head Elder of the tropical island of Lagrishan has a problem. A burst of foreign ...

  7. HDU 1301 Jungle Roads (最小生成树,基础题,模版解释)——同 poj 1251 Jungle Roads

    双向边,基础题,最小生成树   题目 同题目     #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include<stri ...

  8. POJ 1251 Jungle Roads

    题意:嗯……没看题……看了眼图……求个最小生成树. 解法:kruskal. 代码: #include<stdio.h> #include<iostream> #include& ...

  9. [ An Ac a Day ^_^ ] [kuangbin带你飞]专题六 最小生成树 POJ 1251 Jungle Roads

    题意: 有n个点 每个点上有一些道路 求最小生成树 解释下输入格式 A n v1 w1 v2 w2 A点上有n条边 A到v1权值是w1 A到v2权值是w2 思路: 字符串处理之后跑kruskal求最小 ...

随机推荐

  1. 基于 Cookie 的 SSO 中间件 kisso

    kisso  =  cookie sso 基于 Cookie 的 SSO 中间件,它是一把快速开发 java Web 登录系统(SSO)的瑞士军刀.欢迎大家使用 kisso !! kisso 帮助文档 ...

  2. Restlet 学习笔记

    摘要:网络上对 restlet 的评判褒贬不一,有的说框架封装的很好,很有弹性,有的说 rest 架构风格本身是一种简单的风格,restlet 过设计以使编程过于复杂,其实我倒不觉得 restlet ...

  3. Navigator对象关于语言的属性

    [摘要]在做国际化WEB项目的时候,遇到了一个根据用户浏览器所使用的自然语言切换默认语言版本的问题.于是,整理了这篇文章. 首先,W3Cschool关于Navigator的各个属性值说的很明确了,这里 ...

  4. position记录

    1.  relative(相对定位):生成相对定位的元素,通过top,bottom,left,right的设置相对于其正常(原先本身)位置进行定位.可通过z-index进行层次分级.均是以父级的左上角 ...

  5. STL中erase()的陷阱

    最近在刷stl源码剖析这本书时,对于vector的erase()函数引起了我的注意 在删除单个元素时是这样定义的: iterator erase(iterator position){ !=end() ...

  6. CMake编译Makefile

    以编译Libtif文件为例: 你可以用CMake编译libtiff,超简单,两个步骤. 参考文章 CharlesSimonyi,libtiff库的问题的答复

  7. 27. Spring Boot 部署与服务配置

    转自“https://www.cnblogs.com/zhchoutai/p/7127598.html” Spring Boot 其默认是集成web容器的,启动方式由像普通Java程序一样,main函 ...

  8. (JavaScript基础向)sort()方法里的排序函数的理解

    比较常见的解释可以看这里:js的sort()方法,这篇博客写得挺好的,一般的应用的理解已经足够了. 但是如果要活用sort()方法里面的参数——也就是排序函数的话,可能就比较难理解了. 然后我就总结出 ...

  9. upf用到的工具

    emulator          : PXP zebu simulator :

  10. WebService学习总结(2)——WebService是什么?

    一.WebService是什么? 1. 基于Web的服务:服务器端整出一些资源让客户端应用访问(获取数据) 2. 一个跨语言.跨平台的规范(抽象) 3. 多个跨平台.跨语言的应用间通信整合的方案(实际 ...