poj 1847最短路flody
来源:互联网 发布:阿里云虚拟服务器 编辑:程序博客网 时间:2024/05/21 11:12
题目理解起来有点费劲,大概说一下吧!
就是有n个交叉点,就当做有n个点就行,然后这些点和其他点有些路径,每个点是一个开关,开关只能有一个方向走一条路,而第一个数就是默认的开关指向,不用旋转。
这单犯了个错,就是默认的指向实际上只需要旋转0次,而其他路径只需要旋转1次,无论是哪条,只需1次,当初以为,第二个1次,第3个2次。
题目给的实例
3 2 1 //有3个开关点,计算从第二个到第一个最少需要旋转几次
2 2 3//第1个开关可以通向2 和3 ,通向2不需要旋转,通向3需要旋转1次
2 3 1//第2个开关可以通向3 和1, 通向3不需要旋转,通向1需要旋转1次
2 2 1//第一个开关通向2,所以最终的旋转次数为0
代码:
Flody
#include<cstdio>#include<string>#include<cstring>#include<cmath>#include<iostream>#include<algorithm>using namespace std;int a[102][102];#define MAX 100000int N; void flody(){int i,j,k;for(k=1;k<=N;k++)for(i=1;i<=N;i++)for(j=1;j<=N;j++)a[i][j]=min(a[i][j],a[i][k]+a[k][j]);}void init(){int i,j;for(i=1;i<=N;i++)for(j=1;j<=N;j++){if(i==j) a[i][j]=0;else a[i][j]=MAX;}}int main(){int A,B,i,j,k,t;cin>>N>>A>>B;init();for(i=1;i<=N;i++){cin>>k;for(j=1;j<=k;j++){cin>>t;if(j==1) a[i][t]=0;else a[i][t]=1; }}flody();if(a[A][B]==MAX) cout<<-1<<endl;else cout<<a[A][B]<<endl;return 0;}
- poj 1847最短路flody
- poj 1125最短路flody
- Flody-最短路
- poj 2472--106 miles to Chicago-最短路flody
- UVA 10048最短路flody
- hdu 1874最短路flody
- HDU3631_Shortest Path(最短路/Flody)
- HDU 1217Arbitrage(FLODY最短路)
- uva 10048 图论--最短路 flody算法
- 最短路算法:Dijkstra和Flody详解
- poj 1847最短路
- hdu 1869(最短路flody-六度分离)
- hdu2544最短路-裸的flody-dijkstra-spfa
- HDU 1869六度分离(flody最短路)
- POJ2112_Optimal Milking(网洛流最大流Dinic+最短路Flody+二分)
- NBUT 1579 小青蛙找妈妈 dijkstra,flody最短路
- POJ 1847 Tram 最短路
- poj-1847 之最短路
- Ubuntu/linux下最强大的下载工具-aria2
- Flex4破解在MyEclipse10.0之间插件轻松集成详解
- openmp并行嵌套实例
- c语言截取字符串中的某段字符串
- C++ 运算符优先级
- poj 1847最短路flody
- 单步调试
- 1——9行的杨辉三角(C程序)
- 汇编学习笔记-赋值-loop
- 解决eclipse/Myeclipse内存不足
- vs2005中给新建项目添加静态链接库文件
- span元素
- linux挂载命令
- <为知更新>android设置中PreferenceActivity的 <各个节点> 小结