牛客網 旅行商問題 堆優化dijstr

2021-09-12 18:22:50 字數 1235 閱讀 5949

旅行商來到了乙個新的國家,這個國家有n個城市,他們直接由n-1條道路相連線,每條道路的長度不盡相同

旅行商現在在1號城市,若他要每乙個城市都遊覽一遍,他需要行走的最短路程是多少?

題解;城市很多,樸素地dijstra 存不下圖,用堆優化的dij;  然後就是每個城市都走還要求最短路程  那就把最長的的一段路走一遍,其餘路走兩遍,(因為還有返回啊)  (文中加粗意思是題中給出的資料就是每兩點間的邊值且唯一!!)

vector存圖   牛客資料最後跑了85+ ~ 100+ms

#include#include#include#include#include#include#include#includeusing namespace std;

const int inf=0x3f3f3f3f;

const int maxn=1000000;

typedef pairp;

vectore[maxn];

int dis[maxn];

int n;

void dij(int s)} }

}int main()

int sum=0;

while(m--)

dij(1);

int mxx=0;

for(int i=1;i<=n;i++);

edge edge[maxn];//邊編號 從1開始

struct qnode//建構函式

bool operator < (const qnode& a) const

};int dis[maxn];

int head[maxn];

bool vis[maxn];

int x[maxn],y[maxn],z[maxn];

int n,m;

int size;

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

void dijkstra(int s)

} }}

int main()

m=n-1;

int sum=0;

for(int i=1;i<=m;i++)

for(int i=1;i<=m;i++)

dijkstra(1);

int mxx=0;

for(int i=1;i<=n;i++)

//cout

}

牛客網 旅行商問題 路徑問題

時間限制 c c 1秒,其他語言2秒 空間限制 c c 32768k,其他語言65536k 64bit io format lld 旅行商來到了乙個新的國家,這個國家有n個城市,他們直接由n 1條道路相連線,每條道路的長度不盡相同 旅行商現在在1號城市,若他要每乙個城市都遊覽一遍,他需要行走的最短路...

旅行商問題

旅行商問題 乙個商人從城市a出發,訪問bcde等城市各一次最後回到a,問行程如何使得路程或費用最低。這是個np 非多項式可解,但一般驗證容易 問題,假設中間有4個城市,那麼全排列為4!24種,沒有很好的演算法,基本只能窮舉了。class vertex 4 public class lianxi pu...

旅行商問題

一銷售商從n個城市中的某一城市出發,不重複地走完其餘n 1個城市並回到原出發點,在所有可能的路徑中求出路徑長度最短的一條。本題假定該旅行商從第1個城市出發。對每個測試例,第1行有兩個整數 n 4 n 10 和m 4 m 20 n是結點數,m是邊數。接下來m行,描述邊的關係,每行3個整數 i,j le...