HDU3665Seaside(最短路徑)
Description
XiaoY is living in a big city, there are N towns in it and some towns near the sea. All these towns are numbered from 0 to N-1 and XiaoY lives in the town numbered ’0’. There are some directed roads connecting them. It is guaranteed that you can reach any town from the town numbered ’0’, but not all towns connect to each other by roads directly, and there is no ring in this city. One day, XiaoY want to go to the seaside, he asks you to help him find out the shortest way.
Input
There are several test cases. In each cases the first line contains an integer N (0<=N<=10), indicating the number of the towns. Then followed N blocks of data, in block-i there are two integers, Mi (0<=Mi<=N-1) and Pi, then Mi lines followed. Mi means there are Mi roads beginning with the i-th town. Pi indicates whether the i-th town is near to the sea, Pi=0 means No, Pi=1 means Yes. In next Mi lines, each line contains two integers S Mi and L Mi, which means that the distance between the i-th town and the S Mi town is L Mi.
Output
Each case takes one line, print the shortest length that XiaoY reach seaside.
Sample Input
5
1 0
1 1
2 0
2 3
3 1
1 1
4 100
0 1
0 1
Sample Output
XiaoY is living in a big city, there are N towns in it and some towns near the sea. All these towns are numbered from 0 to N-1 and XiaoY lives in the town numbered ’0’. There are some directed roads connecting them. It is guaranteed that you can reach any town from the town numbered ’0’, but not all towns connect to each other by roads directly, and there is no ring in this city. One day, XiaoY want to go to the seaside, he asks you to help him find out the shortest way.
Input
There are several test cases. In each cases the first line contains an integer N (0<=N<=10), indicating the number of the towns. Then followed N blocks of data, in block-i there are two integers, Mi (0<=Mi<=N-1) and Pi, then Mi lines followed. Mi means there are Mi roads beginning with the i-th town. Pi indicates whether the i-th town is near to the sea, Pi=0 means No, Pi=1 means Yes. In next Mi lines, each line contains two integers S Mi and L Mi, which means that the distance between the i-th town and the S Mi town is L Mi.
Output
Each case takes one line, print the shortest length that XiaoY reach seaside.
Sample Input
5
1 0
1 1
2 0
2 3
3 1
1 1
4 100
0 1
0 1
Sample Output
2
題意:這道題輸入的比較麻煩。第一行n代表有n個城市(標號0~n),然後有n行資料,這n行資料每行有兩個數m,p,m代表i城市有m條路,p表示第i個城市是否連線海邊,如果是0不連線,是1就連線海邊。每個m,p,後接有m行資料,每行資料有兩個字母s,l,s代表這條路連線的城市,l代表這條路的距離。最後問小y到海邊的最短距離
思路:最短路,就是輸入的方式變得麻煩了,實質還是沒有變,輸入的是否判斷該城市是否連線海邊,如果連線先儲存在一個陣列裡,然後對每條路更新最短距離就好了。最後floyd演算法做,調出儲存的連線海邊城市,搜尋0~這個城市的距離,找到最小距離就好了。注意小y老家在0城市!
程式碼:
#include<stdio.h>
#include<string.h>
#include<iostream>
#include<algorithm>
#include<math.h>
using namespace std;
#define INF 0xfffffff
int pri[1010][1010];//兩個頂點之間距離
int w[1010];
int n,m;
void floyd()
{
for(int k=0;k<n;k++)//中間點
{
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
pri[i][j]=min(pri[i][j],abs(pri[i][k]+pri[k][j]));
}
}
}
}
int main()
{
while(scanf("%d",&n)!=EOF)
{
int k=0;
int ans=INF;
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
pri[i][j]=i==j?0:INF;
for(int i=0;i<n;i++)
{
int m,y;
scanf("%d%d",&m,&y);
if(y==1)
w[k++]=i;
for(int j=0;j<m;j++)
{
int a,b;
scanf("%d%d",&a,&b);
if(pri[i][a]>b)
pri[i][a]=b;
}
}
floyd();
for(int i=0;i<k;i++)
{
if(pri[0][w[i]]<ans)
ans=pri[0][w[i]];
}
printf("%d\n",ans);
}
return 0;
}
相關文章
- 最短路徑問題
- 矩陣求最短路徑矩陣
- 最短路徑演算法演算法
- QOJ #8673. 最短路徑
- 最短路徑(Floyd演算法)演算法
- Djikstra最短路徑演算法演算法
- 最短路徑(Dijskra演算法)JS演算法
- 最短路徑演算法總結演算法
- 最短路徑之Floyd演算法演算法
- 演算法:最短路徑問題演算法
- 2024_4_22 路徑花費為最長$k$條邊之和最短路
- 動態規劃之最短路徑和動態規劃
- [MATLAB]最短路徑Floyd演算法Matlab演算法
- 幾個最短路徑的演算法演算法
- 最短路徑之Dijkstra演算法演算法
- SQL Server與最短路徑演算法SQLServer演算法
- 獲取所有鑰匙的最短路徑
- Floyd演算法(計算最短路徑)演算法
- 最短路徑問題 (dijkstra演算法)演算法
- 單源最短路徑-Dijkstra演算法演算法
- 求最短路徑——DFS+Floyd演算法演算法
- 圖的最短路徑演算法彙總演算法
- 單源最短路徑 -- Dijkstra演算法演算法
- 《啊哈!演算法》第6章最短路徑演算法
- 尋找兩條最短路的公共路徑
- DS圖—圖的最短路徑(不含程式碼框架)框架
- [最短路徑問題]Dijkstra演算法(含還原具體路徑)演算法
- 多源最短路徑演算法:Floyd演算法演算法
- 最短路徑——floyd演算法程式碼(c語言)演算法C語言
- Python數模筆記-NetworkX(2)最短路徑Python筆記
- 使用A*演算法解迷宮最短路徑問題演算法
- 求最短路徑-----迪傑斯特拉演算法演算法
- 圖的單源最短路徑(Dijkstra演算法)演算法
- 《啊哈演算法》 第六章 最短路徑演算法
- SCU - 4444 別樣最短路徑-大資料完全圖大資料
- 圖論最短路徑問題與matlab實現圖論Matlab
- 最短路徑——dijkstra演算法程式碼(c語言)演算法C語言
- 多源最短路徑,一文搞懂Floyd演算法演算法