杭電1829 並差集 性別判斷

2021-09-24 00:15:06 字數 1450 閱讀 2052

原題傳送門,並差集模板簡介,大佬並差集詳解。

寫在前面:

這個題讓我們判斷有沒有同性戀(好**哦),需要用並差集來做,不過還需要判斷性別。雖然是用並差集但是跟平常的還是有點區別的(注意meg和fin函式的變化)。

解題思路:

判斷兩個昆蟲是否相連

1、如果沒有,用meg函式連起來。

2、如果已經相連,就判斷兩個昆蟲是否同性,怎麼判斷呢,其實我們可以通過節點到最上面的節點距離來判斷(用len陣列存),如果兩個節點的len的差值是奇數,說明兩個節點異性,反之就是同性。

寫在最後:

這題沒坑,這題沒坑,這題沒坑!!!

你想多了,這種題怎麼沒坑呢。明明**已經碼出來了,就是提示輸出錯誤,然後發現每個樣例之間需要空一行。哈哈,我終於找到了,根據我多年(可能是多月)acm的經驗,既然樣例之間要空行,那麼最後乙個樣例肯定沒有空行。結果一提交,woc,心中一萬個草泥馬路過,為什麼還是輸出錯誤,這個有毒吧,不做了。手動狗頭。。。

其實最後乙個樣例也是有空行的,呃,怎麼說呢,上圖:

看吧,人家是有空行的。

唉,菜是原罪,我是滾回去重新學吧。

ac**:

# include

# include

# include

# include

# include

# include

# include

using namespace std;

const

int maxn =

2005

;int id[maxn]

;int len[maxn]

;//len[i]記錄i到最上面的節點的距離

intfin

(int a)

len[a]

= l;

return x;

}void

meg(

int x,

int y)

else

}bool same

(int x,

int y)

intmain()

memset

(len,0,

sizeof

(len));

//注意初始化。

int m, n;

cin >> m >> n;

string ans =

"no suspicious bugs found!"

;while

(n--

)else}}

cout <<

"scenario #"

<< ti <<

":"<< endl<< ans << endl<

}return0;

}

杭電1272 並差集

原題傳送門,並差集模板詳解鏈結,大佬並差集詳解鏈結。解題思路 1 判斷是否有環 2 判斷所有的房子是否連在一起。第一點可以通過same函式判斷,在輸入的時候就可以判斷 第二點可以先通過vis陣列標記,然後遍歷vis陣列,當vis i 1並且id i i的時候,說明i是最上面的父親。再符合條件的情況下...

杭電1198 並差集

原題傳送門,並差集模板函式簡單介紹,大佬的並差集詳解。寫在題前 因為最近學的並差集,因此專門搜的杭電並差集,也就是說,在看這個題之前我已經知道他是用並差集來做的。之前我碰到的題沒有涉及到二維這種情況,其實了解了思路還是很好做的,就是過程有點繁瑣,細節要注意。解題步驟 1 遍歷每個田地,對於每個田地,...

杭電1598 並差集

寫在題前 解題思路 將輸入的資料,按照速度的大小 從小到大 排序 依次將資料用meg函式建立關係,判斷查詢的資料是否符合 第一次符合條件的速度減去剛開始的速度就是答案。具體見 寫在題後 ac include include include include include include includ...