2016夏季練習 最小生成樹

2021-07-15 10:41:29 字數 644 閱讀 6880

prim演算法,還是比較輕鬆的

解釋在注釋裡面

**:#include #include #include #include #include #include using namespace std;

int n,r;

const int inf = 0x3f3f3f3f;

const int maxn = 55;

int mp[maxn][maxn];

int d[maxn];

bool vis[maxn];

int ans;

int prim()

//過程:

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

}if(dm==inf) return -1;//如果沒找到,就說明圖是非聯通的

ans+=dm;//加入

vis[pos]=true;//加入這個點

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

}}//當n個點都加入的時候,迴圈結束,演算法結束

return ans;

}int main()

}int a,b,c;

for(int i=0;ic) mp[a][b]=mp[b][a]=c;

}//以上輸入的處理都是套路,不解釋

cout<

2016夏季練習 線段樹

解釋在 注釋裡 include include include include using namespace std 由於題目中明確後輸入的y一定更大 也就是認為後輸入的其實對於我們的尋找和排序實際上沒有什麼影響 這樣我們就可以進行具體的查詢 const int maxn 32000 10 int...

2016夏季練習 線段樹

include include include include define lson rt 1 define rson rt 1 1 using namespace std int h,w,n const int maxn 200000 10 int tree maxn 2 void pushup...

最小生成樹練習3

暢信道路 放圖祭命運共同體 祭祀完畢!下面來看這道題。這輸入方式 不明擺著讓我們用kruscal嗎?只是這道題與之前兩道不一樣的地方是,有部分道路是事先修好的。那麼我們就稍微變通一下即可。我們回想一下,我們怎麼記錄生成樹的?並查集!所以我們只需要在讀入時,把現成的邊在並查集中連在一起即可,剩下的這個...