計蒜客 最短路習題 聖誕樹

2021-08-27 08:42:57 字數 1040 閱讀 2707

許久未更新,今天做到一道有意思的題目,先上圖,然後細說

這道題大體意思是給定一張無向圖,其邊權為正,要你求出總代價最小的生成樹,生成樹上

每條邊  v(e)的代價為 w(e)*s(j),w(e)為邊(i,j)的權值,s(j)是 對於 j 節點所在子樹的節點

數總和。

題解:該題看起來是最小生成樹的題目,實際上只需從頂點跑一遍最短路後,然後將頂點到每個點的最短

路之和相加即可。

同時還可以拓展下,假設頂點不是固定的,只需對每個點跑一遍最短路演算法,然後找出最短路總和

最小的那個頂點,輸出該頂點最短路之和。

隨後附上ac**:

#include using namespace std;

using namespace std;

const int maxn=50007;

struct edgee[maxn<<1]; //鄰接表要開兩倍

int p[maxn],n,m,eid,dist[maxn],r[maxn];

bool vst[maxn];

void init()

typedef pairpii;

set> min_heap; //second:頂點下標 first:該頂點dist值

bool dij(int s)}}

//n個點都可以從源點到達 返回true

return true;

}void ins(int u,int v,int w)

void ins2(int u,int v,int w)

int main()

if(dij(1))

else printf("no answer");

return 0;

}

計蒜客 電能傳輸 最短路

在嘟嘟生活的王國有 n 座城市,某些城市之間有傳輸電能的線路。在某條線路傳輸電能是會有損耗的,某乙個城市在某一時間只可以向另外乙個城市傳輸電能。已知在城市 s 存在 m 千瓦時電能,求將這些電能都傳輸到城市 t 至少需要損耗多少電能。輸入包含多組測試資料,對於每組測試資料 第一行包含乙個整數 n 0...

計蒜客 熱愛工作的蒜蒜(最短路)

題目鏈結 time limit 1000ms memory limit 262144k 眾所周知,蒜蒜是一名熱愛工作的好員工,他覺得時間就是金錢,做事情總是爭分奪秒。這天晚上,蒜蒜乙個人去吃晚飯。不巧的是,吃完飯以後就開始下雨了,蒜蒜並沒有帶雨傘出來。但是蒜蒜熱愛工作,工作使他快樂,他要盡快趕回去寫...

計蒜客習題 朋友

在社交的過程中,通過朋友,也能認識新的朋友。在某個朋友關係圖中,假定 a 和 b 是朋友,b 和 c 是朋友,那麼 a 和 c 也會成為朋友。即,我們規定朋友的朋友也是朋友。現在,已知若干對朋友關係,詢問某兩個人是不是朋友。請編寫乙個程式來解決這個問題吧。輸入格式 第一行 三個整數 n,m,p n ...