POJ 1603 Risk 最短路 Floyd Dijstra
来源:互联网 发布:云图tv电视直播mac版 编辑:程序博客网 时间:2024/06/04 18:08
POJ 1603
每组数据先输入19组边信息,依次代表从第几个顶点出发有哪些边与之直接相连。
要注意的是图是无向图,所以在更改邻接矩阵时根据无向图的对称性来处理数据
就是求两点中间的最少的城市个数
public class Main{ static int[][] w=new int[21][21]; static final int n=20; public static void main(String[] args) { Scanner in=new Scanner(System.in); int cnt=0; while(in.hasNext()) {cnt++;for(int i=0;i< n;i++)for(int j=0;j< n;j++)w[i][j]=9999999;for(int i=0;i< n-1;i++){int u=in.nextInt();for(int j=0;j< u;j++){int v=in.nextInt();w[i][v-1]=w[v-1][i]=1;}}for(int k=0;k< n;k++)for(int i=0;i< n;i++)for(int j=0;j< n;j++)w[i][j]=Math.min(w[i][j], w[i][k]+w[k][j]);int c=in.nextInt();System.out.println("Test Set #"+cnt);while((c--)!=0){int a1=in.nextInt();int a2=in.nextInt();System.out.println(a1+" to "+a2+": "+w[a1-1][a2-1]);}System.out.println(); } }}Dijstra
#include<iostream> #include<cstdio> #include<cstring> #define MAXNODE 25 #define MAXCOST 9999 using namespace std; int main() { void InputCost(int Cost[][MAXNODE]); void Dijkstra(int Cost[][MAXNODE],int f,int Distance[],int e); int Cost[MAXNODE][MAXNODE]; int cnt; int kkk = 0; /*kkk为格式控制中的数据编号*/ int n,k; int i,f,e,Distance[MAXNODE]; while(cin>>n) /*格式控制*/ /*题目已说明总共19组数据,先在input函数外输入一组用于方便格式控制*/ { memset(Cost,0x3f,sizeof(Cost)); while(n--) { cin>>k; Cost[1][k] = 1; Cost[k][1] = 1; } InputCost(Cost); cin>>cnt; /*输入查找的信息 */ ++kkk; printf("Test Set #%d\n",kkk); while(cnt--) { cin>>f>>e; Dijkstra(Cost,f,Distance,e); } putchar(10); } return 0; } void InputCost(int Cost[][MAXNODE]) /*数据输入,用邻接矩阵来存储图的信息*/ { int n,k; for(int i = 2 ; i <= 19 ; i++) { scanf("%d",&n); for(int j = 0 ; j < n ; j++) { scanf("%d",&k); Cost[i][k] = 1; Cost[k][i] = 1; } } } void Dijkstra(int Cost[][MAXNODE],int f,int Distance[],int e)/*f为出发的结点,e为要查找的从f出发到e的顶点*/ { int s[MAXNODE]; int mindis,dis; int i,j,u; for(i=1;i<=20;i++) /*对S数组初始化*/ { Distance[i]=Cost[f][i]; s[i]=0; } s[f]=1; /*标记v0.*/ for(i=1;i<=20;i++) { mindis=MAXCOST; for(j=1;j<=20;j++) { if(s[j]==0 && Distance[j]<mindis) /*每一次循环比较得到最短值。*/ { u=j; mindis=Distance[j]; } } s[u]=1; /*标记u.*/ for(j=1;j<=20;j++) { if(s[j]==0) { dis=Distance[u]+Cost[u][j]; Distance[j]=(Distance[j]<dis)?Distance[j]: dis; /*修改从初始结点到其他顶点的最短距离。*/ } } } printf("%d to %d: %d\n",f,e,Distance[e]); }
0 0
- POJ 1603 Risk 最短路 Floyd Dijstra
- poj 1603 Risk(最短路floyd)
- Poj 1603 Risk 【最短路】
- 最短路(Floyd、Dijstra,BellmanFord)
- poj 1603 Risk(最短路)
- poj Risk 1603 (最短路) 坑
- [floyd]POJ 1603 Risk
- poj 1603 Risk(floyd)
- zoj 1221 Risk 最短路 floyd
- uva Risk(Floyd求最短路)
- POJ 2253 Dijstra 最短路变形
- POJ 2253 - 最短路变形 SPFA+Dijstra
- UVa 567 Risk (Floyd+任意两点最短路)
- 最短路Floyd(hdu1874),dijstra(poj2387)
- [面试] BFS、Dijstra、SPFA、Floyd求最短路的比较
- zoj 1221 || poj 1603 Risk(Floyd~)
- poj Risk 1603 floyd基础题!!
- poj 1603 Risk(floyd)
- map中containsKey与get方法区别
- 算法导论 练习题 13.4-6
- 微信小程序:页面跳转
- 线程基础:多任务处理(13)——Fork/Join框架(解决排序问题)
- Sql Server系统数据库的作用
- POJ 1603 Risk 最短路 Floyd Dijstra
- 【数据结构_BFS_1069】图的深度优先录入
- Origin绘图后导出图片的方法
- 「Jenkins+Git+Maven+Shell+Tomcat持续集成」经典教程
- 笔记本
- 10. Regular Expression Matching LeetCode题解
- 深度学习是什么?
- apache kafka系列之源码分析走读-kafka内部模块分析
- [LeetCode]572. Subtree of Another Tree