luoguP5836 [USACO19DEC]Milk Visits S
Posted lukelmouse
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了luoguP5836 [USACO19DEC]Milk Visits S相关的知识,希望对你有一定的参考价值。
题目是一颗生成树,所以路径唯一
树上只有两种颜色,如果客人在经过的路径上有自己喜欢的颜色,则输出 1,否则输出 0
可以用并查集来把相同的颜色合并起来。
(a,b) 颜色相同,(col[a]!=c) 路上全是客人不喜欢的颜色,输出 0
(a,b) 颜色相同,(col[a]==c) ,路上全是客人喜欢的颜色,输出 1
(a,b) 颜色不同,那么说明这条路肯定经过两种颜色,那么客人喜欢的颜色一定在其中,输出 1
并查集
#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 10;
int fa[N],str[N*3],n,m;
char col[N];
int find(int x) {
if(fa[x] != x) return fa[x] = find(fa[x]);
return x;
}
void merge(int a,int b) {
fa[find(a)] = find(b);
}
int main() {
cin >> n >> m;
for(int i = 1;i <= n; ++i) {
fa[i] = i;
cin >> col[i];
}
for(int i = 0;i < n - 1; ++i) {
int a,b;cin >> a >> b;
if(col[a] == col[b]) merge(a,b);
}
for(int i = 0;i < m; ++i) {
int a,b;
char c;
cin >> a >> b >> c;
if(find(a) == find(b) && col[a] != c) str[i] = 0;
else str[i] = 1;
}
for(int i = 0;i < m; ++i) cout << str[i];
return 0;
}
以上是关于luoguP5836 [USACO19DEC]Milk Visits S的主要内容,如果未能解决你的问题,请参考以下文章
luoguP3128 [USACO15DEC]最大流Max Flow 题解(树上差分)
[luoguP2870] [USACO07DEC]最佳牛线,黄金Best Cow Line, Gold(后缀数组)
[luoguP2854] [USACO06DEC]牛的过山车Cow Roller Coaster(DP + sort)
luogu P3110 [USACO14DEC]驮运Piggy Back
LuoguP3038/[USACO11DEC]牧草种植Grass Planting树链剖分+树状数组树状数组的区间修改与区间查询