再次做並查的題目。本題用kruskar方法做。我開始沒有按秩(即所包含的層數)來union_set結果wa,後來改了之後就ac了。為什麼呢??不管,以後記得要加上按秩來合併吧。
這題有個技巧就是只用輸入上半個矩陣就ok了,因為是對稱的。看別人用prim方法做也挺簡單的,接下來來學習一下prim演算法吧。
kruskar:
#include #include#include
using
namespace
std;
#define max 101
intfather[max];
intrank[max];
intn,ans;
struct
noden[max*max/2
];bool
cmp(node a,node b)
void make_set(intx)}
int find_set(int
x)void union_set(int
i)
else
father[px]=py;
}ans+=n[i].len;
}int
main()
else}}
sort(n,n+k,cmp);
ans=0; //
pathsnum=n;
for(i=0; i)
printf(
"%d\n
",ans);
}return0;
}
week6 戴好口罩! 並查集的基本應用
分析總結 大家出門還是要戴好口罩噢?新型冠狀病毒肺炎 corona virus disease 2019,covid 19 簡稱 新冠肺炎 是指2019新型冠狀病毒感染導致的肺炎。如果乙個感染者走入乙個群體,那麼這個群體需要被隔離!小a同學被確診為新冠感染,並且沒有戴口罩!危!時間緊迫!需要盡快找到...
並查集的應用
特點 1,都有乙個陣列儲存它的根節點 2,用vis陣列儲存其是否訪問過 3,如果cnt 1 說明該圖是連通的。連通圖中只有根節點的父節點是自身,cnt應該是1 解決的題目 1,題目已經給了圖上頂點之間的關係,通過頂點之間的關係,求連通分量的個數 include stdio.h int bin 100...
並查集的應用
並查集可以有很多應用。比如權值並查集或帶擴充套件域的並查集,可以來維護一些可傳遞的關係。當然,並查集最直接的應用,則是來維護集合的的連通關係。第一題題意 給出一幅圖,以及一系列操作,每次操作刪去乙個點,及這個點相關的所有邊,並輸出刪點之後的連通塊個數。思路 這道題把過程倒著來就好了,可以看成建圖的過...