UVA 10099 - The Tourist Guide
题意:有一个导游,要带领团队从当前点,走到目标点,但是每条路一次性通过的人有数量限制,
所以需要分批次进行。问最少需要分多少次进行。
#include <algorithm>
#include <iostream>
#include <cstdlib>
#include <cstring>
#include <cstdio>#define ll 0x7fffffffusing namespace std;typedef struct d_node
{int point1;int point2;int weight;
}enode;
enode edge[10001];//边,输入存储//union_set
int sets[101];//点的索引
int Rank[101];//那个点作为根节点void set_inital( int a, int b )
{for ( int i = a ; i <= b ; ++ i ) {Rank[i] = 0;sets[i] = i;}
}int set_find( int a )
{if ( a != sets[a] )sets[a] = set_find( sets[a] );return sets[a];
}void Set_union( int a, int b )
{if ( Rank[a] < Rank[b] )sets[a] = b;else {if ( Rank[a] == Rank[b] )Rank[a] ++;sets[b] = a;}
}
//end_union_setint cmp_e( enode a, enode b )
{return a.weight > b.weight;
}int Vector[101];//通过此点的最小权值
int kruskal( int n, int r, int s, int t )
{set_inital( 1, n );for ( int i = 1 ; i <= n ; ++ i )Vector[i] = ll;//cout<<vector[1]<<endl;sort( edge, edge+r, cmp_e );for ( int i = 0 ; i < r ; ++ i ) {int A = set_find( edge[i].point1 );int B = set_find( edge[i].point2 );if ( A != B ) {Set_union( A, B );int mid = min( Vector[A], Vector[B] );Vector[set_find(A)] = min( mid, edge[i].weight );if ( set_find( s ) == set_find( t ) )return Vector[set_find(s)];}}return -1;
}int main()
{int N,R,a,b,c,s,t,p,C = 1;while ( scanf("%d%d",&N,&R) && N+R ) {for ( int i = 0 ; i < R ; ++ i ) {scanf("%d%d%d",&a,&b,&c);edge[i].point1 = a;edge[i].point2 = b;edge[i].weight = c;}scanf("%d%d%d",&s,&t,&p);int W = kruskal( N, R, s, t );int A = p/(W-1) + (p%(W-1) != 0);printf("Scenario #%d\nMinimum Number of Trips = %d\n\n",C ++,A);}return 0;
}
UVA 10099 - The Tourist Guide相关推荐
- uva 10099 The Tourist Guide
DP(仿照Floyd) uva 10048 Audiophobia 一样的题目啊 这次是要找s到t的所有路径中,最小边的最大值,还是仿照Floyd,不过状态转移方程改一下,而且建图初始化也改一下就可 ...
- uva 10099 The Tourist Guide(单源最短路/spfa/dijkstra)
题目: 链接:点击打开链接 题意: 思路: 代码: #include <iostream> #include <cstring> #include <cstdio> ...
- 10099 The Tourist Guide
题意:给出n的城市m条通道,然后每条通道最大的承载人数给出来了,然后给出起点和终点以及要搭载的人数,问最少要走多少次才能把全部游客送到目的地 因为导游每次都要跟团,所以每条交通道路搭载的最大人数要减1 ...
- π-Algorithmist分类题目(3)
原题网站:Algorithmist,http://www.algorithmist.com/index.php/Main_Page π-Algorithmist分类题目(3) Probability ...
- π-Algorithmist分类题目(2)
原题网站:Algorithmist,http://www.algorithmist.com/index.php/Main_Page π-Algorithmist分类题目(2) Set Theory U ...
- sicily题目分类
sicily题目分类 1. 编程入门 2. 数据结构 3. 字符串 4. 排序 5. 图遍历 6. 图算法 7. 搜索:剪枝,启发式搜索 8. 动态规划/递推 9. 分治/递归 10. 贪心 11. ...
- [sicily]部分题目分类
sicily题目分类 1. 编程入门 2. 数据结构 3. 字符串 4. 排序 5. 图遍历 6. 图算法 7. 搜索:剪枝,启发式搜索 8. 动态规划/递推 9. 分治/递归 10. 贪心 11. ...
- Sicily 题目分类
依照自己水平挑着做→ →~~ 1. 编程入门 2. 数据结构 3. 字符串 4. 排序 5. 图遍历 6. 图算法 7. 搜索:剪枝,启发式搜索 8. 动态规划/递推 9. 分治/递归 10. 贪心 ...
- 编程题目分类(剪辑)
1. 编程入门 2. 数据结构 3. 字符串 4. 排序 5. 图遍历 6. 图算法 7. 搜索:剪枝,启发式搜索 8. 动态规划/递推 9. 分治/递归 10. 贪心 11. 模拟 12. 算术与代 ...
- UVa Online Judge 工具網站
UVa Online Judge 工具網站 转自http://www.csie.ntnu.edu.tw/~u91029/uva.html Lucky貓的ACM園地,Lucky貓的 ACM 中譯題目 M ...
最新文章
- Linux上重启服务的正确命令
- Python3 编码讲解
- PhpStorm配置Xdebug调试PHP程序
- android studio sugar,Android | Sugar 的介绍和简单使用
- Panoptic Segmentation论文笔记
- 人工智能无孔不入,电梯按键成危险区?试试用语音控制
- [Deprecated( please use panBy and panTo APIs )]
- C++之父访谈录:我也没想到 C ++ 会这么成功!
- WPF:Webbrowser 捕获关闭事件
- 数据框的合并排序、描述统计、分箱
- 二十三、Oracle学习笔记:综合案例
- 2023年东大学机械专硕考研上岸经验分享
- 台式计算机m4350,联想 商用台式机 ThinkCentre M4350t
- 计算机无steam服务,有了这个,或许以后都不用登录电脑的Steam了
- 13个测试网站访问速度的服务网站
- 【个人硬件开源分享】基于ESP32的能量机关主控受控模块,伏虎单手摇杆重力感应加摇杆加LCD屏幕分为左手和右手,基于PD5048A的I2C总线扩展级联器
- JVM内存分配担保机制
- 超详细的SpringBoot学习笔记-动力节点王鹤
- android融云的几种参数,Android 集成融云
- 网络同步在游戏历史中的发展变化(二)—— Lockstep与帧同步
热门文章
- 小故事分解区块链--科普篇
- LeetCode 430. Flatten a Multilevel Doubly Linked List【链表/DFS/递归/迭代】中等
- java socket 连接异常_JAVA Socket连接服务器时可能抛出的异常
- 魅蓝s6手机sim卡不显示无服务器,科普OPPOA57怎么截图及魅蓝S6怎么插卡
- 3W字,Docker 从入门到精通
- python爬虫之数据提取、正则表达式、xml、XPath、etree、CSS选择器 BeautifulSoup4
- 图画日记怎么画_画画提高的一个方法: 绘画日记!
- 内容市场的2017年:五件大事,每件事都惊心动魄
- 35岁的大龄程序员都去哪里了?
- python语言的开题报告怎么写_开题报告怎么写