Openjudge 235 丛林中的路

好久没练最小生成树了

253:丛林中的路

总时间限制:
1000ms
内存限制:
65536kB
描述


带岛屿Lagrishan的首领现在面临一个问题:几年前,一批外援资金被用于维护村落之间的道路,但日益繁茂的丛林无情的侵蚀着村民的道路,导致道路维
修开销巨大,长老会不得不放弃部分道路的维护。上图左侧图显示的是正在使用道路的简图以及每条路每个月的维修费用(单位为aacms)。现在长老会需要提
出一种方案,即需要保证村落之间都可以互相到达,又要将每个月的道路维修费用控制在最小。村子编号为从A到I。上图右侧显示的方案最小维修开销为216
aacms每月。

输入
输入包含1~100个数据集,最后一行为0.每个数据集第一行为村落数目n, 1 < n <
27,依次用字母表的前n个字母标记。接下来有n-1行,每行的第一个数据便是按字母顺序排列的村子编号(不包括最后一个村庄)。每个村庄后面的数据k代
表该村庄通往编号在其之后的村庄的道路数目,如A 2 B 12 I
25,代表A村庄有2个编号在A之后的村庄和其相连。若k大于0,k后面会依次给出这k个村庄的编号以及各自到起始村庄的道路维修费用,如A 2 B
12 I 25,代表A和B之间道路维修费用为12,
A和I之间道路维修费用为25(维修费用为不超过100的正整数).路的总数目不超过75条,每个村庄到其他村庄不会有超过15条路(包括编号在其之前和
之后的)。
输出
每个数据集有一个输出:针对解决方案每个月维修道路的小费用。
提示:蛮力算法虽能找出解决方案,但将会超出时间限制。
样例输入
9
A 2 B 12 I 25
B 3 C 10 H 40 I 8
C 2 D 18 G 55
D 1 E 44
E 2 F 60 G 38
F 0
G 1 H 35
H 1 I 35
3
A 2 B 10 C 40
B 1 C 20
0
样例输出
216
30

这题最麻烦的部分其实是读入数据……各种处理不好,最后怒开cin

 1 /*by SilverN*/
 2 #include<iostream>
 3 #include<cstdio>
 4 #include<cmath>
 5 #include<cstring>
 6 #include<algorithm>
 7 using namespace std;
 8 const int mxn=100;
 9 int low[mxn];
10 int mp[mxn][mxn];
11 int n;
12 void Prim(){
13     int ans=0;
14     int i,j,k;
15     low[1]=-1;
16     for(i=2;i<=n;i++)low[i]=mp[1][i];
17     for(i=2;i<=n;i++){
18         int min=0xffff;
19         for(k=1;k<=n;k++){
20             if(low[k]!=-1 && low[k]<min){
21                 min=low[k];
22                 j=k;
23             }
24         }
25         ans+=min;
26         low[j]=-1;
27         for(k=1;k<=n;k++){
28             if(mp[j][k]<low[k])low[k]=mp[j][k];
29         }
30     }
31     printf("%d\n",ans);
32     return;
33 }
34 int main(){
35     while(scanf("%d",&n) && n!=0){
36         memset(mp,11,sizeof(mp));
37         memset(low,11,sizeof(low));
38         int i,j;
39         int k,d;
40         char ch1,ch2;
41         for(i=1;i<n;i++){
42             cin>>ch1>>k;
43             for(j=1;j<=k;j++){
44                 cin>>ch2>>d;
45                 mp[ch1-‘A‘+1][ch2-‘A‘+1]=d;
46                 mp[ch2-‘A‘+1][ch1-‘A‘+1]=d;
47             }
48         }
49         Prim();
50     }
51     return 0;
52 }
时间: 2024-10-13 01:49:58

Openjudge 235 丛林中的路的相关文章

#图# #最小生成树# #kruskal# ----- 丛林中的路

最小生成树 一个有 n 个结点的连通图的生成树是原图的极小连通子图,且包含原图中的所有 n 个结点,并且有保持图连通的最少的边.最小生成树可以用kruskal(克鲁斯卡尔)算法或prim(普里姆)算法求出. 在一给定的无向图G = (V, E) 中,(u, v) 代表连接顶点 u 与顶点 v 的边(即),而 w(u, v) 代表此边的权重,若存在 T 为 E 的子集(即)且为无循环图,使得w(T) 最小,则此 T 为 G 的最小生成树. 最小生成树其实是最小权重生成树的简称. kruskal算法

03:丛林中的路

总时间限制:  1000ms 内存限制:  65536kB 描述 热带岛屿Lagrishan的首领现在面临一个问题:几年前,一批外援资金被用于维护村落之间的道路,但日益繁茂的丛林无情的侵蚀着村民的道路,导致道路维修开销巨大,长老会不得不放弃部分道路的维护.上图左侧图显示的是正在使用道路的简图以及每条路每个月的维修费用(单位为aacms).现在长老会需要提出一种方案,即需要保证村落之间都可以互相到达,又要将每个月的道路维修费用控制在最小.村子编号为从A到I.上图右侧显示的方案最小维修开销为216

丛林中的路

总时间限制:  1000ms 内存限制:  65536kB 描述 热带岛屿Lagrishan的首领现在面临一个问题:几年前,一批外援资金被用于维护村落之间的道路,但日益繁茂的丛林无情的侵蚀着村民的道路,导致道路维修开销巨大,长老会不得不放弃部分道路的维护.上图左侧图显示的是正在使用道路的简图以及每条路每个月的维修费用(单位为aacms).现在长老会需要提出一种方案,即需要保证村落之间都可以互相到达,又要将每个月的道路维修费用控制在最小.村子编号为从A到I.上图右侧显示的方案最小维修开销为216

Unity跑酷游戏中的路点生成算法

最近做了一个小的跑酷游戏,今天就我前几天写的 游戏玩家跟随在跑道上的路点行走的简单逻辑进行一下梳理,希望大家和我自己都能够有一定的进步. 下面我先说一下该款游戏的一些有必要知道的前提.跑道是动态生成的,而路点又是作为跑道子对象waypoints的子对象(简单而言,就是孙子对象)存在.所以,路点也就是动态创建,动态销毁了.我的思路是在游戏刚刚加载时,由RacetrackGenerator脚本类在初始化时先动态生成两个跑道,而每个跑道都有一个自己的WaypointsManager(路点管理器脚本),

ZOJ 1406 POJ 1251 Jungle Roads 丛林中的道路,最小生成树,Kruskal算法

题目链接:ZOJ 1406 POJ 1251 Jungle Roads 丛林中的道路 Jungle Roads Time Limit: 2 Seconds      Memory Limit: 65536 KB The Head Elder of the tropical island of Lagrishan has a problem. A burst of foreign aid money was spent on extra roads between villages some ye

Web开发中的路劲问题

一. JSP/Servlet 中路劲问题 1.服务器端的地址: “/”表示到http://localhost:8080/webapp/ 2.客户端地址: 在客户端的链接.表单请求路径中,“/”表示http://localhost:8080/:对于表单中的action的路径,如果是向Servlet发请求的话,直接写请求的相对地址,例如:<form action=”login” method=”post”></form>.同样,如果是链接的话:<a href=”login”>

腥风血雨中成长路之GIT命令提交

常用命令 pull status stash add commit push reset head 常规更新提交操作 更新 git pull 状态 git status 添加上传文件 git add 例: git add  fileName.java 提交,注释 git commit -m "注释" 推送 git push 冲突解决 更新 git pull 因冲突,此处应该会提示有冲突文件 隐藏本地文件 git stash 更新 git pull 此时会有更新文件的信息 还原隐藏文件

整理小朋友在noi.openjudge上的作业(4)

第四章(含小学奥数)计97题,已完成8题 4.1 算法之排序和算法性能   题目ID 标题 分数 尝试人数   1625 Sequence Median 10 90   1754 字符串数组排序问题 10 49   1999 日志排序 10 50   4363 瑞士轮 10 101 4.2 算法之数论   题目ID 标题 分数 尝试人数   1350 Euclid's Game 10 223   1486 A Funny Game 10 70   185 反正切函数的应用 10 44   241

揭秘:那些藏在车与路中的秘密

-------从单车智能到车路协同-------提到智慧交通,很多人首先想到的应该都是自动驾驶技术.当前的自动驾驶技术主要由单车智能实现,由车载智能系统收集.处理驾驶所需信息,并作出判断.近些年来自动驾驶技术发展很快,各种自动驾驶的新闻层出不穷,但其中也包含了一些"翻车"的新闻.一门技术的发展肯定会遇到瓶颈,为了突破这个瓶颈,仅从技术内部去看是不够的,因为解决方案很可能是另一门技术.车是道路交通的参与者,但单车能获取到的信息是有限的,在复杂路况下,需要车.人.路互相配合,将全套交通信息