簡單最小生成樹。
就是讀題很糾結,什麼原有的路,新建的路,刪除的村莊。
總之,所有給的邊都加上,刪除點的操作就是把與該點相連的所有邊刪除(邊權變成inf就是了),然後求最小生成樹。
用kruskal比較方便判斷不連通的情況。
#include#include #include #include #define inf 0x3f3f3f3f using namespace std; struct node { int u,v,w; }e[40000]; int vis[210],r[210],n,tmp,edge; int root(int a) { if(a!=r[a]) r[a]=root(r[a]); return r[a]; } bool cmp(node a,node b) { if(a.w!=b.w) return a.w