【洛谷P2024】食物链
題目描述
動(dòng)物王國(guó)中有三類(lèi)動(dòng)物 A,B,C,這三類(lèi)動(dòng)物的食物鏈構(gòu)成了有趣的環(huán)形。A 吃 B,B
吃 C,C 吃 A。
現(xiàn)有 N 個(gè)動(dòng)物,以 1 - N 編號(hào)。每個(gè)動(dòng)物都是 A,B,C 中的一種,但是我們并不知道
它到底是哪一種。
有人用兩種說(shuō)法對(duì)這 N 個(gè)動(dòng)物所構(gòu)成的食物鏈關(guān)系進(jìn)行描述:
第一種說(shuō)法是“1 X Y”,表示 X 和 Y 是同類(lèi)。
第二種說(shuō)法是“2 X Y”,表示 X 吃 Y 。
此人對(duì) N 個(gè)動(dòng)物,用上述兩種說(shuō)法,一句接一句地說(shuō)出 K 句話(huà),這 K 句話(huà)有的是真
的,有的是假的。當(dāng)一句話(huà)滿(mǎn)足下列三條之一時(shí),這句話(huà)就是假話(huà),否則就是真話(huà)。
? 當(dāng)前的話(huà)與前面的某些真的話(huà)沖突,就是假話(huà)
? 當(dāng)前的話(huà)中 X 或 Y 比 N 大,就是假話(huà)
? 當(dāng)前的話(huà)表示 X 吃 X,就是假話(huà)
你的任務(wù)是根據(jù)給定的 N 和 K 句話(huà),輸出假話(huà)的總數(shù)。
輸入輸出格式
輸入格式:
從 eat.in 中輸入數(shù)據(jù)
第一行兩個(gè)整數(shù),N,K,表示有 N 個(gè)動(dòng)物,K 句話(huà)。
第二行開(kāi)始每行一句話(huà)(按照題目要求,見(jiàn)樣例)
輸出格式:
輸出到 eat.out 中
一行,一個(gè)整數(shù),表示假話(huà)的總數(shù)。
輸入輸出樣例
輸入樣例#1:100 7 1 101 1 2 1 2 2 2 3 2 3 3 1 1 3 2 3 1 1 5 5輸出樣例#1:
3
說(shuō)明
1 ≤ N ≤ 5 ? 10^4
1 ≤ K ≤ 10^5
分析
知識(shí)點(diǎn):并查集。
由關(guān)押罪犯的2個(gè)集合變成了3個(gè)集合。不會(huì)做的話(huà)可以先去做關(guān)押罪犯。
代碼
#include<iostream> #include<cstring> #include<cstdio> #include<algorithm> using namespace std; const int maxn=50000+5; inline int read() {int x=0,f=1; char ch=getchar();while(ch<'0'||ch>'9'){if(ch=='-')f=-1; ch=getchar();}while(ch>='0'&&ch<='9'){x=x*10+ch-'0'; ch=getchar();}return x*f; } int n,k,ans; int father[maxn*3]; inline int find(int x) {if(x!=father[x]) father[x]=find(father[x]);return father[x]; } inline void merge(int x,int y) {int r1=find(x);int r2=find(y);father[r1]=r2; } int main() {n=read();k=read();for(int i=1;i<=n*3;i++) father[i]=i;for(int i=1;i<=k;i++){int p,x,y;p=read();x=read();y=read();if(x>n||y>n){ans++; continue;}if(p==1){if(find(x+n)==find(y)||find(x+n*2)==find(y)){ans++; continue;}merge(x,y);merge(x+n,y+n);merge(x+n*2,y+n*2);}else if(p==2){if(find(x+2*n)==find(y)||find(x)==find(y)){ans++; continue;}merge(x+n,y);merge(y+2*n,x);merge(y+n,x+2*n);}}printf("%d\n",ans);return 0; }
?
轉(zhuǎn)載于:https://www.cnblogs.com/huihao/p/7618123.html
總結(jié)
以上是生活随笔為你收集整理的【洛谷P2024】食物链的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 予谓菊下一句是什么呢?
- 下一篇: 风之画员里的画是谁画的啊?