uva oj 567 - Risk(Floyd算法)
/*
一张有20个顶点的图上。
依次输入每个点与哪些点直接相连。
并且多次询问两点间,最短需要经过几条路才能从一点到达另一点。 bfs 水过
*/
#include<iostream>
#include<cstring>
#include<vector>
#include<cstdio>
#include<queue>
using namespace std; struct node{
int x, step;
node(){ }
node(int x, int step){
this->x=x;
this->step=step;
}
}; vector<int>v[];
queue<node>q;
int vis[]; int b, e; void bfs(){
while(!q.empty()) q.pop();
node cur;
q.push(node(b, ));
while(!q.empty()){
cur=q.front();
q.pop();
if(cur.x==e){
printf("%2d to %2d: %d\n", b, e, cur.step);
return;
}
int len=v[cur.x].size();
for(int i=; i<len; ++i){
if(v[cur.x][i]==e){
printf("%2d to %2d: %d\n", b, e, cur.step+);
return;
}
if(!vis[v[cur.x][i]]){
vis[v[cur.x][i]]=;
q.push(node(v[cur.x][i], cur.step+));
}
}
}
} int main(){
int n, u;
int cnt=;
while(scanf("%d", &n)!=EOF){
while(n--){
scanf("%d", &u);
v[].push_back(u);
v[u].push_back();
}
for(int i=; i<=; ++i){
scanf("%d", &n);
while(n--){
scanf("%d", &u);
v[i].push_back(u);
v[u].push_back(i);
}
}
scanf("%d", &n);
printf("Test Set #%d\n", ++cnt);
while(n--){
scanf("%d%d", &b, &e) ;
bfs();
memset(vis, , sizeof(vis));
}
printf("\n");
for(int i=; i<=; ++i)
v[i].clear(); }
return ;
}
/*
Floyd 才是正解!
*/
#include<iostream>
#include<cstring>
#include<vector>
#include<cstdio>
#include<queue>
#define INF 0x3f3f3f3f
using namespace std; int map[][]; void Folyd(){
for(int k=; k<=; ++k)
for(int i=; i<=; ++i)
for(int j=; j<=; ++j)
if(map[i][j] > map[i][k] + map[k][j])
map[i][j] = map[i][k] + map[k][j];
} int main(){
int n, u, b, e;
int cnt=;
while(scanf("%d", &n)!=EOF){
memset(map, 0x3f, sizeof(map));
while(n--){
scanf("%d", &u);
map[][u]=map[u][]=;
}
for(int i=; i<=; ++i){
scanf("%d", &n);
while(n--){
scanf("%d", &u);
map[u][i]=map[i][u]=;
}
}
scanf("%d", &n);
printf("Test Set #%d\n", ++cnt);
Folyd();
while(n--){
scanf("%d%d", &b, &e) ;
printf("%2d to %2d: %d\n", b, e, map[b][e]);
}
printf("\n");
}
}
uva oj 567 - Risk(Floyd算法)的更多相关文章
- 【Audiophobia UVA - 10048 】【Floyd算法】
题目大意:从a城市到b城市的路径中,尽可能让一路上的最大噪音最小. 题目思路:设d [ i ][ j ]表示 i 到 j 的最大噪音的最小值. 那么d [ i ][ j ] = min( d[ i ] ...
- [Swust OJ 412]--医院设置(floyd算法)
题目链接:http://acm.swust.edu.cn/problem/412/ Time limit(ms): 1000 Memory limit(kb): 65535 Description ...
- Calling Circles(UVa 247)(Floyd 算法)
用Floyd算法求出传递闭包,然后用dfs求出每条连通分量.注意其中用到的几个小技巧: #include<cstdio> #include<iostream> #include ...
- 【uva 10048】Audiophobia(图论--Floyd算法)
题意:有一个N点M边的无向带权图,边权表示路径上的噪声值.有Q个询问,输出 x,y 两点间的最大噪声值最小的路径的该值.(N≤100,M≤1000,Q≤10000) 解法:N值小,且问多对点之间的路径 ...
- UVa 10048 - Audiophobia(Floyd变形)
链接: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...
- 图论篇3——最短路径 Dijkstra算法、Floyd算法
最短路径 问题背景:地图上有很多个城市,已知各城市之间距离(或者是所需时间,后面都用距离了),一般问题无外乎就是以下几个: 从某城市到其余所有城市的最短距离[单源最短路径] 所有城市之间相互的最短距离 ...
- 最短路径之Floyd算法
Floyd算法又称弗洛伊德算法,也叫做Floyd's algorithm,Roy–Warshall algorithm,Roy–Floyd algorithm, WFI algorithm. Floy ...
- 最短路径—Dijkstra算法和Floyd算法
原文链接:http://www.cnblogs.com/biyeymyhjob/archive/2012/07/31/2615833.html 最后边附有我根据文中Dijkstra算法的描述使用jav ...
- 最短路径问题——floyd算法
floyd算法和之前讲的bellman算法.dijkstra算法最大的不同在于它所处理的终于不再是单源问题了,floyd可以解决任何点到点之间的最短路径问题,个人觉得floyd是最简单最好用的一种算法 ...
随机推荐
- Add more security in Visual Studio 2012
Compile flags: /GS: Stack protection from buffer overrun. /SDL: Subset of W3&W4 security warning ...
- java构造器
java的构造器不是方法,因为没有返回值. 构造器可以重载. 构造器的访问说明符: private:只有本类可以使用这个构造器. protected:这个类的子类和包中的类都可以使用此构造器. pub ...
- java和android及IOS对接RSA加密经验
1.网上找的java生成RSA密钥对的例子,产生的字附串实际上是hax后和密钥串 你可以将他们当成静态字附串存在java代码里 2.android和java可以代码复用,IOS对接比较麻烦 3.IOS ...
- mysql命令化操作实用小技巧
★1.问:如果我的mysql数据库服务器程序在D:\program files\phpstudy\mysql,里,那么我该怎么在cmd命令状态下使用它? 进入cmd状态后,系统默认在当前用户 ...
- [1002]prime
输入一个数,判断其是否为素数: 本题有多组测试样例. 输入规则如下: 第一行为一个整数,样例组数T: 第二至第t+1行每行都有一个整数a(a >= 2),表示需要处理的数: 如果是素数则输出“y ...
- poj 1195 - Mobile phones(树状数组)
二维的树状数组,,, 记得矩阵的求和运算要想好在写.... 代码如下: #include <cstdio> #include <cstdlib> #include <cm ...
- 关于div弹出层的实际应用心得
今天本人要做一个点击弹出的功能,因为这个功能是最后做的,所以写的时候很纠结, 因为本人小菜一枚, 开始尝试用 position:relative:来做一试不行呀 ,因为用这个来做的话 会打乱原有的布局 ...
- 直接通过Ajax 处理程序加 Action名,取得变量值。
var set_value;$(document).ready(function () { var query = createParam('GetValue', '0'); ...
- java获取路径的方法
package com.zjf; import java.io.File; public class GetPath { public static void getPath() { //方式一 Sy ...
- 解决VS2008 开发Windows Mobile 项目生成速度慢的问题(转)
最近用VS2008开发Windows Mobile程序,使用C#..NET Compact Framework,发现项目生成速度比较慢.用VS2008打开项目后,开始一段时间生成速度还能忍受,时间一长 ...