有n个人其中一些人是正直者一些人是欺诈者。正直者说真话欺诈者说假话。你现在已经知道每个人的身份。有q次询问每次询问你需要回答x指证y是正直者还是欺诈者。第一行输入一个正整数n代表人数第二行输入一个长度为n的字符串第i个字符为H代表第i个人是正直者L代表欺诈者。第三行输入一个正整数q代表询问的次数。接下来的q行每行输入两个正整数x和y代表一次询问。输出为q行分别代表每次的指证结果。请用c++实现
#include
using namespace std;
const int MAXN = 100005; int n, q, f[MAXN];
int find(int x) { if (f[x] == x) return x; return f[x] = find(f[x]); }
int main() { cin >> n; for (int i = 1; i <= n; i++) { char c; cin >> c; if (c == 'H') f[i] = i; else f[i] = 0; } cin >> q; while (q--) { int x, y; cin >> x >> y; if (find(x) == find(y)) cout << "Honest" << endl; else cout << "Lie" << endl; } return 0; }
原文地址: https://www.cveoy.top/t/topic/buvz 著作权归作者所有。请勿转载和采集!