日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

【牛客 - 181D】小叶的巡查(树的直径,数学)

發(fā)布時(shí)間:2023/12/10 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【牛客 - 181D】小叶的巡查(树的直径,数学) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

題干:

8102年,牛客系列競(jìng)賽空前繁榮。為了更好地管理競(jìng)賽,小葉決定巡查于各大城市之間,體察民情。所以,從一個(gè)城市馬不停蹄地到另一個(gè)城市成了小葉最常做的事情。小葉有一個(gè)錢袋,用于存放往來城市間的路費(fèi)。

這個(gè)國(guó)家有一套優(yōu)秀的交通方案,使得任何一個(gè)大城市都能從首都直接或者通過其他大城市間接到達(dá)。同時(shí),如果不重復(fù)經(jīng)過大城市,從首都到達(dá)每個(gè)大城市的方案都是唯一的。

如果不在某個(gè)城市停下來修整,在連續(xù)行進(jìn)過程中,小葉所花的路費(fèi)與他已走過的距離有關(guān),在走第x-1千米到第x千米這一千米中(x是整數(shù)),他花費(fèi)的路費(fèi)是x+10這么多。也就是說走1千米花費(fèi)11,走2千米要花費(fèi)23。

因?yàn)閲?guó)家力挺牛客系列競(jìng)賽,所以國(guó)家會(huì)給小葉報(bào)銷全部的路費(fèi)。

現(xiàn)在組織想知道:小葉從某一個(gè)城市出發(fā),中間不休息,到達(dá)另一個(gè)城市,所有可能花費(fèi)的路費(fèi)中最多是多少呢?

輸入描述:

輸入的第一行包含一個(gè)整數(shù)n,表示包括首都在內(nèi)的城市數(shù) 城市從1開始依次編號(hào),1號(hào)城市為首都。 接下來n-1行,描述高速路(高速路一定是n-1條) 每行三個(gè)整數(shù)Pi, Qi, Di,表示城市Pi和城市Qi之間有一條高速路,長(zhǎng)度為Di千米。

輸出描述:

輸出一個(gè)整數(shù),表示小葉最多花費(fèi)的路費(fèi)是多少。

?

示例1

輸入

復(fù)制

5 1 2 2 1 3 1 2 4 5 2 5 4

輸出

復(fù)制

135

備注:

n<23333

解題報(bào)告:

? ?樹的直徑裸題。(因?yàn)榉凑菢渎?#xff0c;所以沒有環(huán),所以bfs隨便寫就好了。那個(gè)vis[cur]=1放到外面也是ac的)

? ?再一個(gè)考點(diǎn)就是等差數(shù)列求和了、、、

? ?其實(shí)這個(gè)題巧就巧在是以距離為變化單位的,而不是經(jīng)過的城市個(gè)數(shù),如果加上了城市數(shù)的權(quán)值,那就復(fù)雜了、、、

AC代碼:

#include<bits/stdc++.h> #define ll long long #define mp make_pair using namespace std; const int MAX = 23333 + 5; vector<pair<int,int> > vv[MAX]; int vis[MAX],dis[MAX]; int bfs(int x,int &w) {memset(vis,0,sizeof vis);memset(dis,0,sizeof dis);int res = 0;int rep = x;queue<int> q;q.push(x);vis[x]=1;dis[x]=0;while(!q.empty()) {int cur = q.front();q.pop();for(int i = 0; i<vv[cur].size(); i++) {pair<int,int> now = vv[cur][i];if(vis[now.first]) continue;vis[now.first]=1;dis[now.first] = dis[cur] + now.second;if(dis[now.first] > res) {rep = now.first;res = dis[now.first];}q.push(now.first);}}w = res;return rep; } int main() {int n;int a,b,w;cin>>n;for(int i = 1; i<n; i++) {scanf("%d%d%d",&a,&b,&w);vv[a].push_back(mp(b,w));vv[b].push_back(mp(a,w));}int ans = 0;int u = bfs(1,ans);int v = bfs(u,ans);ll out = (ll)ans * 10 + (1 + ans) *(ll) ans / 2;printf("%lld\n",out);return 0 ;}

?

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)

總結(jié)

以上是生活随笔為你收集整理的【牛客 - 181D】小叶的巡查(树的直径,数学)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。