【NOI2001】洛谷2024 食物链
2016-10-10 17:28
218 查看
题目描述
动物王国中有三类动物 A,B,C,这三类动物的食物链构成了有趣的环形。A 吃 B,B
吃 C,C 吃 A。
现有 N 个动物,以 1 - N 编号。每个动物都是 A,B,C 中的一种,但是我们并不知道
它到底是哪一种。
有人用两种说法对这 N 个动物所构成的食物链关系进行描述:
第一种说法是“1 X Y”,表示 X 和 Y 是同类。
第二种说法是“2 X Y”,表示 X 吃 Y 。
此人对 N 个动物,用上述两种说法,一句接一句地说出 K 句话,这 K 句话有的是真
的,有的是假的。当一句话满足下列三条之一时,这句话就是假话,否则就是真话。
• 当前的话与前面的某些真的话冲突,就是假话
• 当前的话中 X 或 Y 比 N 大,就是假话
• 当前的话表示 X 吃 X,就是假话
你的任务是根据给定的 N 和 K 句话,输出假话的总数。 输入输出格式 输入格式:
从 eat.in 中输入数据
第一行两个整数,N,K,表示有 N 个动物,K 句话。
第二行开始每行一句话(按照题目要求,见样例)
输出格式:
输出到 eat.out 中
一行,一个整数,表示假话的总数。
带偏移量并查集,dis记录和父亲关系。
dis=0表示和父亲一样,1表示父亲吃儿子,2表示儿子吃父亲。
用手算一下打个表记录各种连接的情况。
动物王国中有三类动物 A,B,C,这三类动物的食物链构成了有趣的环形。A 吃 B,B
吃 C,C 吃 A。
现有 N 个动物,以 1 - N 编号。每个动物都是 A,B,C 中的一种,但是我们并不知道
它到底是哪一种。
有人用两种说法对这 N 个动物所构成的食物链关系进行描述:
第一种说法是“1 X Y”,表示 X 和 Y 是同类。
第二种说法是“2 X Y”,表示 X 吃 Y 。
此人对 N 个动物,用上述两种说法,一句接一句地说出 K 句话,这 K 句话有的是真
的,有的是假的。当一句话满足下列三条之一时,这句话就是假话,否则就是真话。
• 当前的话与前面的某些真的话冲突,就是假话
• 当前的话中 X 或 Y 比 N 大,就是假话
• 当前的话表示 X 吃 X,就是假话
你的任务是根据给定的 N 和 K 句话,输出假话的总数。 输入输出格式 输入格式:
从 eat.in 中输入数据
第一行两个整数,N,K,表示有 N 个动物,K 句话。
第二行开始每行一句话(按照题目要求,见样例)
输出格式:
输出到 eat.out 中
一行,一个整数,表示假话的总数。
带偏移量并查集,dis记录和父亲关系。
dis=0表示和父亲一样,1表示父亲吃儿子,2表示儿子吃父亲。
用手算一下打个表记录各种连接的情况。
#include<cstdio> #include<cstring> int fa[50010],dis[50010], eat[3][3]={{0,1,0},{0,0,1},{1,0,0}}, f[3][3]={{2,0,1},{1,2,0},{0,1,2}}, g[3][3]={{0,1,2},{2,0,1},{1,2,0}}; int find(int x) { if (x==fa[x]) return x; int tem=find(fa[x]); dis[x]=(dis[x]+dis[fa[x]])%3; return fa[x]=tem; } int main() { int i,j,k,m,n,p,q,x,y,z,u,v,ans=0; scanf("%d%d",&n,&m); for (i=1;i<=n;i++) fa[i]=i; for (i=1;i<=m;i++) { scanf("%d%d%d",&x,&u,&v); if (u>n||v>n) { ans++; continue; } p=find(u); q=find(v); if (x==1) { if (p==q) { if (dis[u]!=dis[v]) ans++; } else { fa[p]=q; dis[p]=g[dis[u]][dis[v]]; } } else { if (p==q) { if (!eat[dis[u]][dis[v]]) ans++; } else { fa[p]=q; dis[p]=f[dis[u]][dis[v]]; } } } printf("%d\n",ans); }
相关文章推荐
- 【洛谷 2024】[NOI2001]食物链
- 【洛谷2704】【NOI2001】炮兵阵地
- [NOI2001]食物链
- 洛谷luogu-2024 食物链 HQG_AC的博客
- Noi2001 食物链
- POJ1182 【NOI2001】 食物链 <种类并查集>
- NOI 2001 食物链 解题报告 (并查集)
- JZOJ 1778 洛谷 2024 食物链
- NOI 2001食物链(经典并查集)
- NOI2001-食物链
- poj1182 带权并查集 NOI 2001 食物链(eat) P1531
- 【并查集】【向量偏移】[NOI 2001]食物链 eat WikiOI 1074
- NOI 2001 食物链 题解
- noi2001 食物链(并查集)
- NOI 2001 食物链
- 【题解】 codevs1074 洛谷2024 食物链 详述 《高级数据结构》-林厚从
- 【NOI2001】 食物链 并查集
- 洛谷 2024 食物链
- 【NOI2001】食物链
- 【洛谷2024】食物链 并查集