pku 1847 Tram
2010-08-22 13:45
267 查看
http://acm.pku.edu.cn/JudgeOnline/problem?id=1847
题意:求由起始点A到B的最短路径中要开多少次转弯灯开关。
用floyd算法,记得在第一个十字路口的时候不需要开转弯灯开关。
#include <stdio.h> int key[101][101]; int number,start,end; int min(int a,int b)//求最小值函数 { return a<b ? a:b; } void Floyd() { int i,j,k; for(k = 1;k <= number;k ++) { for(i = 1;i <= number;i ++) { for(j = 1;j <= number;j ++) if(key[i][k] < key[0][0] && key[k][j] < key[0][0]) key[i][j] = min(key[i][j],key[i][k]+key[k][j]); } } if(key[start][end] < key[0][0]) printf("%d/n",key[start][end]); else printf("-1/n"); } int main() { int i,j,k,loc; while(scanf("%d%d%d",&number,&start,&end) != EOF) {
//初始化 for(i = 0;i <= number;i ++) { for(j = 0;j <= number;j ++) key[i][j] = 200; } for(i = 1;i <= number;i ++) { scanf("%d",&k); for(j = 1;j <= k;j ++) { scanf("%d",&loc); if(j == 1) key[i][loc] = 0;//每一行的第一个十字路口设为0 else key[i][loc] = 1;//其余的设为1 } } Floyd(); } return 0 ; }
/*
3 2 1 2 2 3 2 3 1 2 1 2
0
*/
相关文章推荐
- PKU 1847 Tram
- pku1847 Tram
- poj 1847 Tram (SPFA最短路)
- poj 1847(floyd) Tram
- poj1847 - Tram (最短路径问题) (Dijkstra)
- POJ1847 Tram
- POJ 1847 Tram(Floyd)
- POJ1847---Tram
- Floyd_Warshall POJ 1847 Tram
- POJ 1847 Tram【Dijkstra】
- POJ 1847 Tram 【最短路,spfa算法,题意理解是关键呀!!】
- (POJ 1847)Tram 简单最短路 spfa
- poj&nbsp;1847&nbsp;Tram(floyd)
- POJ 1847 Tram --set实现最短路SPFA
- POJ 1847 Tram(floyd 最短路)
- POJ 1847 Tram
- POJ-1847 Tram
- POJ 1847 Tram
- POJ 1847 Tram (简单最短路径dijkstra-floyd-spfa)
- POJ 1847 - Tram