国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

Til the Cows Come Home POJ - 2387

2019-11-08 02:33:14
字體:
來源:轉載
供稿:網友

Description Bessie is out in the field and wants to get back to the barn to get as much sleep as possible before Farmer John wakes her for the morning milking. Bessie needs her beauty sleep, so she wants to get back as quickly as possible.

Farmer John’s field has N (2 <= N <= 1000) landmarks in it, uniquely numbered 1..N. Landmark 1 is the barn; the apple tree grove in which Bessie stands all day is landmark N. Cows travel in the field using T (1 <= T <= 2000) bidirectional cow-trails of various lengths between the landmarks. Bessie is not confident of her navigation ability, so she always stays on a trail from its start to its end once she starts it.

Given the trails between the landmarks, determine the minimum distance Bessie must walk to get back to the barn. It is guaranteed that some such route exists. Input * Line 1: Two integers: T and N

Lines 2..T+1: Each line describes a trail as three space-separated integers. The first two integers are the landmarks between which the trail travels. The third integer is the length of the trail, range 1..100. OutputLine 1: A single integer, the minimum distance that Bessie must travel to get from landmark N to landmark 1. Sample Input 5 5 1 2 20 2 3 30 3 4 20 4 5 20 1 5 100 Sample Output 90 Hint INPUT DETAILS:

There are five landmarks.

OUTPUT DETAILS:

Bessie can get home by following trails 4, 3, 2, and 1. 問題概述 第一行輸入T,N接下來的T行輸入點v,u以及邊長v,u的權重。N代表有1~N個點。 求母牛從N走到1的最短路徑。 問題分析 采用Dijstra算法,注意輸入的數據中可能會有相同的邊,要取權重最小的一條。 Dijstra算法描述。 集合S起始值為始發頂點N(作為新加入的頂點) 集合u起始值為除N以外的其他頂點。

1.遍歷新加入到S中節點的孩子節點(只在u不在s中)跟新它們到起始頂點N的距離(一開始為正無窮) 2.將u中到達N距離最短的頂點加入到s中 3.重復步驟1與2直到u為空。 注:s中頂點存儲的值為該頂點到達N的最小值 知識點介紹

truct cmp{ bool Operator()(int x,int y){ return result[x]>result[y]; }};PRiority_queue<int,vector<int>,cmp> que;

自定義優先隊列<比較。 代碼實現

#include<iostream>#include<cstdio>#include<queue>#include<vector>using namespace std;#define INF 1<<29#define maxi 1002int map[maxi][maxi];int result[maxi];int s[maxi];vector<int>vec[maxi];struct cmp{ bool operator()(int x,int y){ return result[x]>result[y]; }};priority_queue<int,vector<int>,cmp> que;int dfs(int N){ int vis[maxi]={0}; vis[N]=1; while(!que.empty()){ int temp=que.top(); que.pop(); if(temp==1)return result[temp]; s[temp]=1; for(int i=1;i<N+1;i++) if(map[temp][i]!=INF&&s[i]==0){ if(map[temp][i]+result[temp]<result[i]) result[i]=map[temp][i]+result[temp]; if(vis[i]==0)que.push(i); vis[i]=1; } }}int main(){ int T,N; scanf("%d %d",&T,&N); for(int i=1;i<N+1;i++){ result[i]=INF; s[i]=0; for(int j=1;j<N+1;j++) map[i][j]=INF; } for(int i=1;i<T+1;i++){ int v1,v2,w; scanf("%d %d %d",&v1,&v2,&w); if(map[v1][v2]>w)map[v2][v1]=map[v1][v2]=w; } que.push(N); result[N]=0; printf("%d/n",dfs(N)); return 0;}
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 西宁市| 浪卡子县| 江达县| 隆尧县| 商水县| 亚东县| 信阳市| 辽源市| 阳东县| 天柱县| 兰溪市| 鄢陵县| 彭州市| 黎川县| 扶绥县| 沅陵县| 淮安市| 彭水| 临城县| 自治县| 元氏县| 农安县| 永福县| 泾阳县| 天峻县| 民和| 青冈县| 亳州市| 涡阳县| 庄浪县| 沙湾县| 峨眉山市| 祁连县| 墨脱县| 金沙县| 达州市| 尚志市| 蒲城县| 尼玛县| 星座| 邢台市|