Content
有一个魔杖最初在 \(Z\) 巫师中。经过 \(n\) 轮较量,第 \(i\) 轮中,\(Z_{i,1}\) 巫师打败了 \(Z_{i,2}\) 巫师。如果一个巫师打败了拥有魔杖的巫师,那么魔杖就到了获胜的巫师手中。问:
- 最后魔杖在哪个巫师哪里。
- 魔杖一共经过多少巫师之手。
数据范围:\(n\in[1,100]\)。
Solution
第一个问题直接模拟,将魔杖按照规则不断传递。
第二个问题开个 \(vis\) 数组,直接判断是否出现过,没出现过标记一下再累加答案即可。
Code
int n, ans;
char first[2], game1[2], game2[2];
map<char, int> vis;int main() {
scanf("%s%d", first, &n);
vis[first[0]] = 1, ans++;
for(int i = 1; i <= n; ++i) {
scanf("%s%s", game1, game2);
if(game2[0] == first[0]) {
first[0] = game1[0];
if(!vis[game1[0]]) vis[game1[0]] = 1, ans++;
}
}
printf("%c\n%d", first[0], ans);
return 0;
}