POJ 1251 Jungle Roads (zoj 1406) MST
传送门:
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的更多相关文章
- poj 1251 Jungle Roads (最小生成树)
		
poj 1251 Jungle Roads (最小生成树) Link: http://poj.org/problem?id=1251 Jungle Roads Time Limit: 1000 ...
 - POJ 1251 Jungle Roads - C语言 - Kruskal算法
		
Description The Head Elder of the tropical island of Lagrishan has a problem. A burst of foreign aid ...
 - POJ 1251 	Jungle Roads (prim)
		
D - Jungle Roads Time Limit:1000MS Memory Limit:10000KB 64bit IO Format:%I64d & %I64u Su ...
 - POJ 1251 Jungle Roads(最小生成树)
		
题意 有n个村子 输入n 然后n-1行先输入村子的序号和与该村子相连的村子数t 后面依次输入t组s和tt s为村子序号 tt为与当前村子的距离 求链接全部村子的最短路径 还是裸的最小生成树咯 ...
 - 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 ...
 - POJ 1251 Jungle Roads (最小生成树)
		
题目: Description The Head Elder of the tropical island of Lagrishan has a problem. A burst of foreign ...
 - HDU 1301 Jungle Roads (最小生成树,基础题,模版解释)——同 poj 1251 Jungle Roads
		
双向边,基础题,最小生成树 题目 同题目 #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include<stri ...
 - POJ 1251  Jungle Roads
		
题意:嗯……没看题……看了眼图……求个最小生成树. 解法:kruskal. 代码: #include<stdio.h> #include<iostream> #include& ...
 - [ 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求最小 ...
 
随机推荐
- RK3066 实现LED闪烁的代码分析
			
实现LED灯的闪烁,须要在驱动里加入一个定时器函数,详细实现涉及到了LED GPIO驱动.用户空间程序调用驱动程序. 1.首先来看LED设备驱动注冊过程,代码位于../kernel/drivers/l ...
 - Problem C: Celebrity Split
			
题目描写叙述 Problem C: Celebrity Split Jack and Jill have decided to separate and divide their property e ...
 - poj 1001 java大精度
			
import java.io.* ; import java.math.* ; import java.util.* ; import java.text.* ; public class Main ...
 - Flume的Storage&Master
			
storage是存储系统,可以是一个普通file,也可以是HDFS,HIVE,HBase,分布式存储等. Master是管理协调Agent和Collector的配置等信息,是flume集群的控制器.
 - BZOJ4025: 二分图(LCT)
			
Description 神犇有一个n个节点的图.因为神犇是神犇,所以在T时间内一些边会出现后消失.神犇要求出每一时间段内这个图是否是二分图.这么简单的问题神犇当然会做了,于是他想考考你. Input ...
 - 使用Python开发轻量级的Web框架以及基于WSGI的服务器来实现一个网站页面
			
说明:该篇博客是博主一字一码编写的,实属不易,请尊重原创,谢谢大家! 目录 一丶项目说明 二丶数据准备 三丶使用网络TCP开发一个基于WSGI协议的Web服务器 四丶使用python3开发一个轻量级的 ...
 - 蚂蚁金服入股36Kr给我的一点警示:应该相信自己的理性分析,不能盲目迷信权威
			
最近3年,关注互联网和创业投资比较多,每周都会关注下本周发生的创业投融资大事件. 我注意到,一些自媒体作者经常会发布一些有"前瞻性"的文章,比如"美团大众要合并了&quo ...
 - PMP杂谈--名词解释
			
过程:PMP中常常提到过程,好像非常高大上,实则不然,过程说白了就是一系列的行动和活动,用来创建预定的产品,服务或成果. 就这么简单. 再深入点就是,行动和活动当然都会有ITTO(输入,工具和技术.输 ...
 - .net core 分布式性能计数器的实现
			
1.特别鸣谢张善友老师的指点; 2.分布式性能计数器链接地址:https://mp.weixin.qq.com/s/hPV_bNZD4XmjP0QTE54pWA
 - Shell中反引号(`)与$()用法的区别
			
今天有人提问: echo `echo \\\\\\\w` echo $(echo \\\\\\\w) 为什么输出的不一样? 这就引申出了另一个问题:反引号与$()有没有区别? 这是一个非常有意思的问题 ...