51Nod 1443 路徑和樹

2022-04-02 23:15:33 字數 816 閱讀 5425

還是一道很簡單的基礎題,就是乙個最短路徑樹的型別題目

我們首先可以發現這棵樹必定滿足從1出發到其它點的距離都是原圖中的最短路

換句話說,這棵樹上的每一條邊都是原圖從1出發到其它點的最短路上的邊

那麼直接跑最短路,spfa,不存在的?我只信dj,然後記錄那些邊在最短路上

然後直接跑mst即可。是不是很經典的水題

然後我又莫名拿了rank1(沒辦法天生自帶小常數

code

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

typedef long long ll;

const int n=3e5+5;

struct edge

e[n<<1];

struct heap

inline void read(int &x)

inline void double_add(int x,int y,int z)

inline bool cmp(data a,data b)

); }

} memset(vis,0,sizeof(vis));

for (i=1;i<=cnt;++i)

if (dis[e[i].from]+1ll*e[i].v==dis[e[i].to]) a[++tot]=(data);

return printf("%lld",mst()),0;

}

51nod 1443 路徑和樹 單元最短路徑

分析 很容易想到先搞一遍單源最短路徑,然後只保留最短路徑上的邊,接下來容易想到最小生成樹,但是因為有的邊只刪了乙個方向,所以變成了有向圖了,要求的就是最小樹形圖,比較麻煩而且容易t。實際上,考慮在連好的圖裡加乙個點,肯定是加連向它的最短邊,類似貪心的思路,所以結果就是刪完後的圖中,每個點的最小前驅邊...

51nod 1610 路徑計數

原題連線 考慮不同權重為 d 的倍數的邊組成的圖.f d 為此圖中。路徑總數量。由於m 50000 明顯會出現重邊。建議限制邊的數量或者使用鄰接矩陣存圖。矩陣更為方便。由於最初沒有考邊過多。使用了鍊錶 拓撲排序。量較大。include include include include define m...

51Nod1967 路徑定向

給出乙個有向圖,要求給每條邊重定向,使得定向後出度等於入度的點最多,輸出答案和任意一種方案 input 第一行兩個正整數n,m,表示1 n號點與m條邊 接下來m行,每行兩個正整數xi,yi,表示存在一條有向邊從xi指向yi n 10 5,m 3 10 5,xi,yi n output 第一行乙個整數...