题目:uva 10099 The Tourist Guide

nyoj 1019 亲戚来了

题意:给出一个无向图,每条路有一个容量。从 s 到 t 的一条最大的流量。

分析:这个题目可以用最短路的算法来做,最短路是求从 s 到 t 的最短路,这里是求从 s 到 t 的最小容量。最短路的三种算法都可以。

nyoj的使我们比赛的题目,有坑,图有重边,要处理,还有s可能等于t。

spfa代码:

#include <cstdio>
#include <iostream>
#include <queue>
#include <cstring>
#include <algorithm>
#include <stack>
#include <vector>
#include <utility>
#include <cmath>
using namespace std;
const int N = 120;
const int inf = 0x3f3f3f3f;
struct Node
{int v,len;
};
vector<Node> v[N];
void add_Node(int x,int y,int z)
{v[x].push_back((Node){y,z});v[y].push_back((Node){x,z});
}
void v_clear(int n)
{for(int i=1;i<=n;i++)v[i].clear();
}
int dis[N];
void spfa(int s)
{memset(dis,inf,sizeof(dis));queue<int> q;q.push(s);while(!q.empty()){int tmp=q.front();q.pop();for(int i=0;i<v[tmp].size();i++){Node ff=v[tmp][i];int ans=min(dis[tmp],ff.len);//printf("--%d %d\n",ff.v,ans);if(dis[ff.v]!=inf){if(ans>dis[ff.v])  //注意只要更新了都要压入q.push(ff.v);dis[ff.v]=max(dis[ff.v],ans);}elseq.push(ff.v),dis[ff.v]=ans;}}
}
int main()
{int n,m,cas=1;while(~scanf("%d%d",&n,&m)){if(n==0 && m==0)break;for(int i=0; i<m; ++i){int a,b,c;scanf("%d%d%d",&a,&b,&c);add_Node(a,b,c);}int s,t,num;scanf("%d%d%d",&s,&t,&num);spfa(s);//printf("%d\n",dis[t]);if(dis[t]>=inf)printf("-1\n");else{dis[t]--;printf("Scenario #%d\n",cas++);printf("Minimum Number of Trips = %d\n\n",(num+dis[t]-1)/dis[t]);}v_clear(n);}return 0;
}

nyoj floyd 代码:


#include <cstdio>
#include <iostream>
#include <queue>
#include <cstring>
#include <algorithm>
#include <stack>
#include <vector>
#include <utility>
#include <cmath>
using namespace std;
const int N = 120;
const int inf = 0x3f3f3f3f;
int mp[N][N];
int main()
{int n,m,cas=1;while(~scanf("%d%d",&n,&m)){memset(mp,inf,sizeof(mp));for(int i=1;i<=n;i++)mp[i][i]=0;for(int i=0; i<m; ++i){int a,b,c;scanf("%d%d%d",&a,&b,&c);if(mp[a][b]!=inf)mp[a][b]=mp[b][a]=max(mp[a][b],c);elsemp[a][b]=mp[b][a]=c;}int s,t,num;scanf("%d%d%d",&s,&t,&num);for(int k=1; k<=n; ++k)  //floydfor(int i=1; i<=n; ++i){for(int j=1; j<=n; ++j){int tmp = min(mp[i][k], mp[k][j]);if(mp[i][j]==inf) mp[i][j] = tmp;else mp[i][j] = max(mp[i][j],tmp);}}if(s==t)puts("0");else if(mp[s][t]>=inf)printf("-1\n");else{mp[s][t]--;printf("%d\n",(num+mp[s][t]-1)/mp[s][t]);}}return 0;
}

nyoj dij代码:

 #include <cstdio>
#include <cstring>
#include <algorithm>using namespace std;
const int N = 120;
const int inf = 0x3f3f3f3f;
int map[N][N];
int n,m;
int dij(int s,int t)
{int vis[N],dis[N];memset(vis,0,sizeof(vis));memset(dis,-1,sizeof(dis));dis[s]=inf;//vis[t]=1;int tmp=s;while(1){vis[tmp]=1;for(int i=1;i<=n;i++){if(map[tmp][i]>0){if(map[tmp][i]>dis[i]){dis[i]=min(dis[tmp],map[tmp][i]);}}}int max=-1;for(int i=1;i<=n;i++){if(vis[i]==0 && dis[i]>max){max=dis[i];tmp=i;}}
//        printf("--%d\n",tmp);if(max==-1)return dis[t];}
}
int main()
{while(~scanf("%d%d",&n,&m)){memset(map,0,sizeof(map));for(int i=0;i<m;i++){int x,y,z;scanf("%d%d%d",&x,&y,&z);map[x][y]=max(map[x][y],z);map[y][x]=map[x][y];}int x,y,z;scanf("%d%d%d",&x,&y,&z);int flow=dij(x,y);
//        printf("%d\n",flow);if(x==y){printf("0\n");continue;}if(flow==-1){printf("-1\n");continue;}int ans=(z-2)/(flow-1)+1;   ///ans=(z-1)/(flow-1);
//        if((z-1)%(flow-1)!=0 && (z-1)%(flow-1)!=1)
//            ans++;printf("%d\n",ans);}return 0;
}

uva 10099 The Tourist Guide nyoj 1019 亲戚来了【单个路线最大流【最短路算法】】相关推荐

  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. sicily题目分类

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

  5. [sicily]部分题目分类

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

  6. Sicily 题目分类

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

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

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

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

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

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

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

  10. UVa Online Judge 工具網站

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

最新文章

  1. 3.7.1 读取输入
  2. redis存10万条数据_redis详细介绍
  3. promise间隔时间添加dom
  4. java并发编程之美-阅读记录4
  5. 新手入门教程-------Spring Boot中集成RabbitMQ
  6. 三星在美最高法院吐苦水,苹果设计专利索赔太多
  7. html2canvas关于图片不能正常截取 1
  8. 彩虹易支付源码v8.1.1-支持多通道轮训/API退款/实名认证/完善手动提现t0t1
  9. 甘肃暴雨强度公式_我国若干城暴雨强度公式列表.doc
  10. 批量修改文件夹内文件格式
  11. Microsoft Office XP 智能标记的安装和安全性
  12. 在VS中一个项目下两个以上源文件怎么通过编译
  13. wordpress mysql缓存_【新功能】wordpress数据库缓存功能介绍和教程
  14. Win7系统安装Pycharm专业版
  15. 技术分享:逆向破解华为路由器第三部分
  16. java将图片的url转换成File,File转换成二进制流byte
  17. java2 day03 XML DOM4J
  18. 2019ICPC上海网络赛A 边分治+线段树
  19. 安信可1.5---编译下载乐鑫ESP8266 RTOS SDK库
  20. [论文阅读] (14)英文论文实验评估(Evaluation)如何撰写及精句摘抄(上)——以入侵检测系统(IDS)为例

热门文章

  1. k8s不适合mysql_K8S 配置mysql配置文件不生效问题处理
  2. 控制器c语言编程,如何用C语言对DMA控制器编程 - 全文
  3. windwos上外网
  4. Python安装word2vec环境依赖
  5. 【北亚数据恢复】MSSQL 2000 出现“823”报错信息的数据恢复案例
  6. 负载均衡(Load Balance)
  7. python拟合曲线_用python做曲线拟合
  8. 【BZOJ4200】【LOJ2134】【NOI2015】小园丁与老司机(DP,有源汇上下界最小流)
  9. RHCE-ansible第三次实验,通过ansible自动化部署web服务
  10. flutter之从零开始搭建(三)之 网络请求