题意:有一个导游,要带领团队从当前点,走到目标点,但是每条路一次性通过的人有数量限制,

所以需要分批次进行。问最少需要分多少次进行。

#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相关推荐

  1. uva 10099 The Tourist Guide

    DP(仿照Floyd) uva 10048 Audiophobia  一样的题目啊 这次是要找s到t的所有路径中,最小边的最大值,还是仿照Floyd,不过状态转移方程改一下,而且建图初始化也改一下就可 ...

  2. uva 10099 The Tourist Guide(单源最短路/spfa/dijkstra)

    题目: 链接:点击打开链接 题意: 思路: 代码: #include <iostream> #include <cstring> #include <cstdio> ...

  3. 10099 The Tourist Guide

    题意:给出n的城市m条通道,然后每条通道最大的承载人数给出来了,然后给出起点和终点以及要搭载的人数,问最少要走多少次才能把全部游客送到目的地 因为导游每次都要跟团,所以每条交通道路搭载的最大人数要减1 ...

  4. π-Algorithmist分类题目(3)

    原题网站:Algorithmist,http://www.algorithmist.com/index.php/Main_Page π-Algorithmist分类题目(3) Probability ...

  5. π-Algorithmist分类题目(2)

    原题网站:Algorithmist,http://www.algorithmist.com/index.php/Main_Page π-Algorithmist分类题目(2) Set Theory U ...

  6. sicily题目分类

    sicily题目分类 1. 编程入门 2. 数据结构 3. 字符串 4. 排序 5. 图遍历 6. 图算法 7. 搜索:剪枝,启发式搜索 8. 动态规划/递推 9. 分治/递归 10. 贪心 11. ...

  7. [sicily]部分题目分类

    sicily题目分类 1. 编程入门 2. 数据结构 3. 字符串 4. 排序 5. 图遍历 6. 图算法 7. 搜索:剪枝,启发式搜索 8. 动态规划/递推 9. 分治/递归 10. 贪心 11. ...

  8. Sicily 题目分类

    依照自己水平挑着做→ →~~ 1. 编程入门 2. 数据结构 3. 字符串 4. 排序 5. 图遍历 6. 图算法 7. 搜索:剪枝,启发式搜索 8. 动态规划/递推 9. 分治/递归 10. 贪心 ...

  9. 编程题目分类(剪辑)

    1. 编程入门 2. 数据结构 3. 字符串 4. 排序 5. 图遍历 6. 图算法 7. 搜索:剪枝,启发式搜索 8. 动态规划/递推 9. 分治/递归 10. 贪心 11. 模拟 12. 算术与代 ...

  10. UVa Online Judge 工具網站

    UVa Online Judge 工具網站 转自http://www.csie.ntnu.edu.tw/~u91029/uva.html Lucky貓的ACM園地,Lucky貓的 ACM 中譯題目 M ...

最新文章

  1. Linux上重启服务的正确命令
  2. Python3 编码讲解
  3. PhpStorm配置Xdebug调试PHP程序
  4. android studio sugar,Android | Sugar 的介绍和简单使用
  5. Panoptic Segmentation论文笔记
  6. 人工智能无孔不入,电梯按键成危险区?试试用语音控制
  7. [Deprecated( please use panBy and panTo APIs )]
  8. C++之父访谈录:我也没想到 C ++ 会这么成功!
  9. WPF:Webbrowser 捕获关闭事件
  10. 数据框的合并排序、描述统计、分箱
  11. 二十三、Oracle学习笔记:综合案例
  12. 2023年东大学机械专硕考研上岸经验分享
  13. 台式计算机m4350,联想 商用台式机 ThinkCentre M4350t
  14. 计算机无steam服务,有了这个,或许以后都不用登录电脑的Steam了
  15. 13个测试网站访问速度的服务网站
  16. 【个人硬件开源分享】基于ESP32的能量机关主控受控模块,伏虎单手摇杆重力感应加摇杆加LCD屏幕分为左手和右手,基于PD5048A的I2C总线扩展级联器
  17. JVM内存分配担保机制
  18. 超详细的SpringBoot学习笔记-动力节点王鹤
  19. android融云的几种参数,Android 集成融云
  20. 网络同步在游戏历史中的发展变化(二)—— Lockstep与帧同步

热门文章

  1. 小故事分解区块链--科普篇
  2. LeetCode 430. Flatten a Multilevel Doubly Linked List【链表/DFS/递归/迭代】中等
  3. java socket 连接异常_JAVA Socket连接服务器时可能抛出的异常
  4. 魅蓝s6手机sim卡不显示无服务器,科普OPPOA57怎么截图及魅蓝S6怎么插卡
  5. 3W字,Docker 从入门到精通
  6. python爬虫之数据提取、正则表达式、xml、XPath、etree、CSS选择器 BeautifulSoup4
  7. 图画日记怎么画_画画提高的一个方法: 绘画日记!
  8. 内容市场的2017年:五件大事,每件事都惊心动魄
  9. 35岁的大龄程序员都去哪里了?
  10. python语言的开题报告怎么写_开题报告怎么写