hdu 3665Seaside(簡單floyd)
Seaside
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 1006 Accepted Submission(s): 722
Problem 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 SMi and LMi, which means that the distance between the
i-th town and the SMi town is LMi.
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
Source
題目意思很好懂,當時我們竟然想到了一步步dp,範圍很小,n最大才為10而已,可以直接用floyd,只是一直不敢交,覺得存在bug,因為n為0的時候不知道怎麼處理。。最後突然交了一發,A了,應該沒有n=0的資料。。
題目地址:Seaside
AC程式碼:
#include<iostream>
#include<cstring>
#include<cstdio>
#define maxn 1e12
using namespace std;
long long dis[15][15];
int issea[15],n;
void floyd()
{
int i,j,k;
for(k=0;k<n;k++)
for(i=0;i<n;i++)
for(j=0;j<n;j++)
if(dis[i][j]>dis[i][k]+dis[k][j])
dis[i][j]=dis[i][k]+dis[k][j];
}
int main()
{
int i,j;
long long ans;
while(cin>>n)
{
ans=maxn;
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
dis[i][j]=maxn;
dis[i][i]=0;
}
memset(issea,0,sizeof(issea)); //是否是海邊
for(i=0;i<n;i++)
{
int a,b,c,d;
scanf("%d%d",&a,&b);
issea[i]=b;
for(j=0;j<a;j++)
{
scanf("%d%d",&c,&d);
dis[i][c]=d;
}
}
floyd();
for(i=0;i<n;i++)
if(issea[i]&&dis[0][i]<ans)
ans=dis[0][i];
cout<<ans<<endl;
}
return 0;
}
相關文章
- hdu5365 簡單幾何問題
- hdu 4287Intelligent IME(簡單hash)Intel
- hdu 1326 java (理解起來很簡單)Java
- HDU 1227 Fast Food(簡單二維dp)AST
- hdu 1069 Monkey and Banana(簡單dp)NaN
- hdu 1789 Doing Homework again(簡單貪心)AI
- HDU 1241Oil Deposits(簡單搜尋題)
- HDU 4422 The Little Girl who Picks Mushrooms(簡單題)OOM
- hdu 1237 Java 簡單計算器Java
- 簡單的揹包問題(入門)HDU2602 HDU2546 HDU1864
- HDU 1272小希的迷宮(簡單並查集)並查集
- HDU 5119 Happy Matt Friends(簡單二維dp)APP
- ACM HDU 1279 驗證角谷猜想(簡單水題)ACM
- HDU_1237 一個簡單的計算器
- HDU 1466 計算直線的交點數(簡單dp)
- HDU1788Chinese remainder theorem again(中國剩餘定理 簡單)REMAI
- HDU 1077Catching Fish(簡單計算幾何)
- 最短路-Floyd
- HDU杭電1874-暢通工程續(dijkstra演算法和Floyd演算法)演算法
- hdu 3415 單調佇列佇列
- Binary Tree Traversals(HDU1710)二叉樹的簡單應用二叉樹
- hdu 2072 Java 單詞數(超級坑) HDU 2072Java
- HDU 3530 單調佇列佇列
- hdu 3401 單調佇列+DP佇列
- hdu 4122 單調佇列佇列
- HDU 4548美素數(簡單題 儲存結果時需要注意不要超時)
- hdu4374單調佇列+dp佇列
- HDU 4565 So Easy!(公式化簡+矩陣)公式矩陣
- Floyd最短路演算法演算法
- 【圖論】Floyd演算法圖論演算法
- HDU-安卓程式開發之簡單儲存/內部儲存/外部儲存 & 捉蟲安卓
- HDU 母函式簡單題 - 找單詞/Ignatius and the Princess III/Square Coins/Holding Bin-Laden Captive!函式APT
- 單源最短路徑複習--Dijkstra演算法和Floyd演算法演算法
- 最短路徑(Floyd演算法)演算法
- POJ 2240 Arbitrage(Floyd最短路)
- 簡單選擇排序就是簡單~~~排序
- HDU 3530 Subsequence (dp+單調佇列)佇列
- AQS簡簡單單過一遍AQS