1. 程式人生 > >Codevs1995 黑魔法師之門 並查集

Codevs1995 黑魔法師之門 並查集

Codevs1995 黑魔法師之門
hzw:並查集維護,如果兩點,在同一集合中 ans*2+1

#include <cstdio>
#include <cstring>
#include <iostream>
#include <cstdlib>
using namespace std;

#define MAXN (300020)
#define mod (1000000009)
int first[MAXN], nxt[MAXN<<1], fa[MAXN];
struct edge{
    int from, to, cost;
}es[MAXN << 1
]; int find(int x) { int r = x; while(r != fa[r]) r = fa[r]; int t; while(x != r) { t = fa[x]; fa[x] = r; x = t; } return r; } void read(int &a) { a = 0; bool f = 0; char ch = getchar(); while(!isdigit(ch)) { if
(ch == '-') f = 1; ch = getchar(); } while(isdigit(ch)) { a *= 10; a += (ch-'0'); ch = getchar(); } if(f) a *= -1; } int main() { int n, m, ans = 0; read(n);read(m); for(int i = 1; i <= n; ++ i) fa[i] = i; while(m--) { int
a, b; read(a);read(b); int ya = find(a), yb = find(b); if(ya != yb) fa[ya] = yb; else ans = (((ans%mod)*2)%mod+1)%mod; printf("%d\n", ans); } return 0; }

相關推薦

Codevs1995 魔法師

Codevs1995 黑魔法師之門 hzw:並查集維護,如果兩點,在同一集合中 ans*2+1 #include <cstdio> #include <cstring>

codevs 1995 魔法師 解題報告

題目描述 Description 經過了16個工作日的緊張忙碌,未來的人類終於收集到了足夠的能源。然而在與Violet星球的戰爭中,由於Z副官的愚蠢,地球的領袖applepi被邪惡的黑魔法師Vani囚禁在了Violet星球。為了重啟Nescafe這一巨集偉的科

魔法師

黑魔法師之門 (magician.pas/c/cpp) 題目描述 經過了16個工作日的緊張忙碌,未來的人類終於收集到了足夠的能源。然而在與Violet星球的戰爭中,由於Z副官的愚蠢,地球的領袖applepi被邪惡的黑魔法師Vani囚禁在了Violet星球。為了重啟Nesca

魔法師

esp getchar const max cto strong cstring space math https://www.zybuluo.com/ysner/note/1239406 題面 給出一個大小為\(n\)的無向圖,求圖中每個點的度數大於零且都是偶數的子圖的個

入門OJ 4192: [Noip模擬題]魔法師

argv else scan ons scanf nio public lse 代碼 題目 Description applepi被囚禁的地點只有一扇門,當地人稱它為“黑魔法師之門”。這扇門上畫著一張無向無權圖,而打開這扇門的密碼就是圖中【每個點的度數大於零且都是偶數】的子

vijos 1540 月亮

題目: 描述 吉兒是一家古董店的老闆娘,由於她經營有道,小店開得紅紅火火。昨天,吉兒無意之中得到了散落民間幾百年的珍寶—月亮之眼。吉兒深知“月亮之眼”價值連城:它是由許多珍珠相連而成的,工匠們用金線連線珍珠,每根金線連線兩個珍珠;同時又對每根金線染上兩種顏色,一半染

【NOIP2013模擬】魔法師

題目描述 經過了16個工作日的緊張忙碌,未來的人類終於收集到了足夠的能源。然而在與Violet星球的戰爭中,由於Z副官的愚蠢,地球的領袖applepi被邪惡的黑魔法師Vani囚禁在了Violet星球。為了重啟Nescafé這一巨集偉的科技工程,人類派出了一支由XLk、Poet_shy

JZOJ 3385. 【NOIP2013模擬】魔法師

目錄: 題目: 分析: 程式碼: 題目: 分析: 實際上每次操作後的答案就是2^(圖中”元”環的個數)。 元環的意思如右圖所示,(1-2-3-4-1)和(3

【codevs 1995】魔法師

嗯…… 通過樣例看出來,答案要麼不變,要麼*2+1 然後 發現如果新加的這條邊same(l[i].f,l[i].t),就*2+1 證明以後再說,機房要關門了…… #include <

魔法師 C組模擬賽

題目大意 每次加1條邊(共N次),每次詢問每個點的度數大於零且都是偶數的子圖的個數對1000000009取模的值. 解題思路: 並查集 每次讀入的兩個點如果父親相同就說明這兩個點的度數大於零且都是偶數的子圖。 我們又可以發現,每次(ans初值為1)

ACM-小希的迷宮——hdu1272

%d memory pro 設計思路 條件 class 並集 log -c ***************************************轉載請註明出處:http://blog.csdn.net/lttree*********************

【HDU 1272】小希的迷宮(無向圖回路問題)

problem 沒有 現在 new 一行 回路 問題 ima namespace 描述 上次Gardon的迷宮城堡小希玩了很久(見Problem B),現在她也想設計一個迷宮讓Gardon來走。但是她設計迷宮的思路不一樣,首先她認為所有的通道都應該是雙向連通的,就是說如果

算法復習

max return 查詢 合並 clas 直接 結構 壓縮 構建 並查集是一種以樹結構建立的能夠高效處理分組問題中合並,查找操作的數據結構 支持三種基本操作:建立,查詢,合並 實現: 1 #include<iostream> 2 using namesp

【hiho】14 無間道【圖論--

const lse string turn problem scan -c for sca 傳送門:無間道之並查集 分析 並查集的分析可以看上面的傳送門,寫的挺好的了。 其實在我看來並查集就是一種方便的維護集合的一種技巧,提出了代表元素這一概念。 My AC Code #i

hihoCoder week14 無間道

並查集的基本使用   #include <bits/stdc++.h> using namespace std; const int N = 1e5+10; int n, fa[N]; int cnt, tot; map<string ,int> mp

1001 舒適的路線

題目描述 Description Z小鎮是一個景色宜人的地方,吸引來自各地的觀光客來此旅遊觀光。 Z小鎮附近共有 N(1<N≤500)個景點(編號為1,2,3,…,N),這些景點被M(0<

資料結構與演算法C++

並查集 Union Find 可以解決連線問題和路徑問題 下圖中使用id表示陣列,第一行表示其索引,第二行表示元素值,為0的元素表示是互相連線在一起的,同樣為1的元素表示互相連線在一起的 下面是測

Find函式

發現自己寫了兩道題都把Find函式寫得一塌糊塗。。。一題是沒有路徑壓縮過不了,一題是因為前面寫錯過弄混了,不三不四的。。。總結很重要啊!! 路徑壓縮:遞迴寫法: int Find (int x) {    if(Father[x] != x)     {     Fathe

資料結構 --- 樹的應用(

概念: 並查集是一種簡單的集合表示,它支援一下三種操作: 1)Union(S, Root1, Root2):     把集合S中的子集合Root2併入集合Root1中。要求Root1和Root2互不相交,否則不執行合併。 2)Find(S, x):      查詢集合S中單

演算法 C語言實現3

標頭檔案 UnionFind3.h #ifndef UNIONFIND3_H_INCLUDED #define UNIONFIND3_H_INCLUDED #include "stdlib.h" #include "ASSERT.h" typedef stru