usaco ★Bessie Come Home 回家
生活随笔
收集整理的這篇文章主要介紹了
usaco ★Bessie Come Home 回家
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
★Bessie Come Home 回家
現在是晚餐時間,而母牛們在外面分散的牧場中.
農民約翰按響了電鈴,所以她們開始向谷倉走去.
你的工作是要指出哪只母牛會最先到達谷倉(在給出的測試數據中,總會有且只有一只速度最快的
33
母牛).
在擠奶的時候(晚餐前),每只母牛都在她自己的牧場上,一些牧場上可能沒有母牛.
每個牧場由一條條道路和一個或多個牧場連接(可能包括自己).
有時,兩個牧場(可能是自我相同的)之間會有超過一條道路相連.
至少有一個牧場和谷倉之間有道路連接.
因此,所有的母牛最后都能到達谷倉,并且母牛總是走最短的路徑.
當然,母牛能向著任意一方向前進,并且她們以相同的速度前進.
牧場被標記為'a'..'z'和'A'..'Y',在用大寫字母表示的牧場中有一只母牛,小寫字母中則沒有.
谷倉的標記是'Z',注意沒有母牛在谷倉中.
PROGRAM NAME: comehome
INPUT FORMAT
第 1 行: 整數 P(1<= P<=10000),表示連接牧場(谷倉)的道路的數目.
第 2 ..P+1 行: 用空格分開的兩個字母和一個整數:
被道路連接牧場的標記和道路的長度(1<=長度<=1000).
SAMPLE INPUT (file comehome.in)
5
A d 6
B d 3
C e 9
d Z 8
e Z 3
OUTPUT FORMAT
單獨的一行包含二個項目:
最先到達谷倉的母牛所在的牧場的標記,和這只母牛走過的路徑的長度.
SAMPLE OUTPUT (file comehome.out)
’
現在是晚餐時間,而母牛們在外面分散的牧場中.
農民約翰按響了電鈴,所以她們開始向谷倉走去.
你的工作是要指出哪只母牛會最先到達谷倉(在給出的測試數據中,總會有且只有一只速度最快的
33
母牛).
在擠奶的時候(晚餐前),每只母牛都在她自己的牧場上,一些牧場上可能沒有母牛.
每個牧場由一條條道路和一個或多個牧場連接(可能包括自己).
有時,兩個牧場(可能是自我相同的)之間會有超過一條道路相連.
至少有一個牧場和谷倉之間有道路連接.
因此,所有的母牛最后都能到達谷倉,并且母牛總是走最短的路徑.
當然,母牛能向著任意一方向前進,并且她們以相同的速度前進.
牧場被標記為'a'..'z'和'A'..'Y',在用大寫字母表示的牧場中有一只母牛,小寫字母中則沒有.
谷倉的標記是'Z',注意沒有母牛在谷倉中.
PROGRAM NAME: comehome
INPUT FORMAT
第 1 行: 整數 P(1<= P<=10000),表示連接牧場(谷倉)的道路的數目.
第 2 ..P+1 行: 用空格分開的兩個字母和一個整數:
被道路連接牧場的標記和道路的長度(1<=長度<=1000).
SAMPLE INPUT (file comehome.in)
5
A d 6
B d 3
C e 9
d Z 8
e Z 3
OUTPUT FORMAT
單獨的一行包含二個項目:
最先到達谷倉的母牛所在的牧場的標記,和這只母牛走過的路徑的長度.
SAMPLE OUTPUT (file comehome.out)
B 11
明顯的迪杰斯特拉,我覺得usaco最主要想考的是怎么把那些化成數據結構存起來真的煩。a-Z用0-51表示51就是源點Z求它到各點的最短路
/*
ID:jinbo wu
TASK:comehome
LANG:C++
*/
#include<bits/stdc++.h>
using namespace std;
int m[55][55];
int d[55];
bool v[55];
int main()
{freopen("comehome.in","r",stdin);freopen("comehome.out","w",stdout);int n;cin>>n;char a,b;int k;for(int i=0;i<=51;i++)for(int j=0;j<=51;j++)m[i][j]=50000;for(int i=0;i<n;i++){getchar();scanf("%c %c %d",&a,&b,&k);if(a<97)a=a-'A'+26;else a=a-97;if(b<97)b=b-'A'+26;else b=b-97;if(m[a][b]>k){m[a][b]=k;m[b][a]=k;}}for(int i=0;i<=51;i++)m[i][i]=0;// memset(v,0,sizeof(v));for(int i=0;i<=51;i++)d[i]=m[i][51];v[51]=1;for(int i=0;i<=51;i++){int mind=50000,x;for(int j=0;j<=51;j++)if(!v[j]&&mind>d[j]){mind=d[x=j];}v[x]=1;for(int j=0;j<=51;j++)if(!v[j]&&d[j]>d[x]+m[x][j])d[j]=d[x]+m[x][j];}int mind=50000;int flag;for(int i=26;i<51;i++){if(mind>d[i]){flag=i;mind=d[i];} }cout<<(char)(flag+'A'-26)<<" "<<mind<<endl;}
’
總結
以上是生活随笔為你收集整理的usaco ★Bessie Come Home 回家的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 1974年江青为啥要批判和封杀电影《创业
- 下一篇: 《庾楼新岁》第三句是什么