【BZOJ2238】Mst 最小生成树+LCA+堆】的更多相关文章

[BZOJ2238]Mst Description 给出一个N个点M条边的无向带权图,以及Q个询问,每次询问在图中删掉一条边后图的最小生成树.(各询问间独立,每次询问不对之后的询问产生影响,即被删掉的边在下一条询问中依然存在) Input 第一行两个正整数N,M(N<=50000,M<=100000)表示原图的顶点数和边数. 下面M行,每行三个整数X,Y,W描述了图的一条边(X,Y),其边权为W(W<=10000).保证两点之间至多只有一条边. 接着一行一个正整数Q,表示询问数.(1&l…
链接 题解 先构建出最小生成树,如果删的是非树边,直接输出答案 否则问题转化为,把该边删掉后剩下两个联通块,两个端点分别在两个块内的最小边权,LCT可以维护 不妨换一种思考方向:考虑一条非树边可以代替哪些树边,根据次小生成树的套路,它可以代替树上两端点之间路径上的任意一条边 因此,对MST进行树链剖分,然后对每一条非树边更新它两端点之间路径的最小值即可 注意:题目给的图可能不连通,需要特判! #include<bits/stdc++.h> #define REP(i,a,b) for(int…
待填坑 Code //CF160D Edges in MST //Apr,4th,2018 //树上差分+LCA+MST #include<cstdio> #include<iostream> #include<vector> #include<algorithm> #include<cstring> using namespace std; long long read() { long long x=0,f=1; char c=getchar…
跑一遍mst.对于非mst上的边,显然删掉不影响. 如果删边在树上,相当于这时剩下两个连通块.可以证明要重新构成mst只需要再加一条连接两个连通块的最小边,不会证,yy一下,因为原来连通块连的边权和已经最小化了,就不要动,如果换用两条以上的边,肯定不会更优. 所以问题就是断掉树边,找最小联通边.可以LCT.````` 这种一颗树断成两截找联通边的题有一个常用思路,要使得联通,必须得有非树边两端点形成的链过这个断边.换句话说,一条非树边两点形成的树上链可以在树断掉后成为联通边当且仅当他经过的边断掉…
[BZOJ2238]Mst 题目大意: 给你一个\(n(n\le50000)\)个点,\(m(m\le10^5)\)条边的无向带权图.\(q(q\le10^5)\)次询问,每次询问去掉一条边后图能否连通,如果连通,求最小生成树.(询问互相独立) 思路: 首先求出最小生成树.对于非树边,去掉这条边对答案没有影响:对于树边,去掉这条边后就把原生成树分成两个不相交的连通块,新的最小生成树就是原树-该边边权+连接两个连通块的最小边.树链剖分+线段树维护即可. 时间复杂度\(\mathcal O((m+q…
1937: [Shoi2004]Mst 最小生成树 Time Limit: 3 Sec  Memory Limit: 64 MBSubmit: 802  Solved: 344[Submit][Status][Discuss] Description Input 第 一行为N.M,其中 表示顶点的数目, 表示边的数目.顶点的编号为1.2.3.…….N-1.N.接下来的M行,每行三个整数Ui,Vi,Wi,表示顶点Ui与Vi之间有一条边,其权值为 Wi.所有的边在输入中会且仅会出现一次.再接着N-1…
首先,贴上一个很好的讲解贴: http://www.wutianqi.com/?p=3012 HDOJ 1233 还是畅通工程 http://acm.hdu.edu.cn/showproblem.php?pid=1233 裸的Prim... #include<cstdio> #define MAXN 105 #define INF 0x3f3f3f3f int map[MAXN][MAXN]; int dist[MAXN]; int vis[MAXN]; int n,a,b,x,ans,tot…
[BZOJ1937][Shoi2004]Mst 最小生成树 Description Input 第一行为N.M,其中 表示顶点的数目, 表示边的数目.顶点的编号为1.2.3.…….N-1.N.接下来的M行,每行三个整数Ui,Vi,Wi,表示顶点Ui与Vi之间有一条边,其权值为Wi.所有的边在输入中会且仅会出现一次.再接着N-1行,每行两个整数Xi.Yi,表示顶点Xi与Yi之间的边是T的一条边. Output 输出最小权值 Sample Input 6 9 1 2 2 1 3 2 2 3 3 3…
题目1 : 最小生成树三·堆优化的Prim算法 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 回到两个星期之前,在成功的使用Kruscal算法解决了问题之后,小Ho产生了一个疑问,究竟这样的算法在稀疏图上比Prim优化之处在哪里呢? 提示:没有无缘无故的优化! 输入 每个测试点(输入文件)有且仅有一组测试数据. 在一组测试数据中: 第1行为2个整数N.M,表示小Hi拥有的城市数量和小Hi筛选出路线的条数. 接下来的M行,每行描述一条路线,其中第i行为3个整数N1_…
Codeforce 472D Design Tutorial: Inverse the Problem 解析含快速解法(MST.LCA.思維) 今天我們來看看CF472D 題目連結 題目 給你一個\(n\times n\)的矩陣代表點\(i\)到點\(j\)的最短距離.問是否可以造出一棵邊權為正的樹. 前言 這題的輸入,輸入3e6個Integer經過實測就大概需要700ms以上了(如果沒開輸入優化好像還會直接TLE的樣子).並且我一開始是用Prim's Algo去寫MST的,priority_q…