700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > RoboCom 世界机器人开发者大赛-高职组 国赛(RC-v3 智能护理中心统计)

RoboCom 世界机器人开发者大赛-高职组 国赛(RC-v3 智能护理中心统计)

时间:2020-09-15 11:56:34

相关推荐

 RoboCom 世界机器人开发者大赛-高职组 国赛(RC-v3 智能护理中心统计)

RC-v3 智能护理中心统计

题意:

给出各管理节点的关系,和每个管理节点的照护老人数量。

两种操作:1. 转院. 2. 查询 该管理节点以下总的老人人数.

知识点:

树。

#include<bits/stdc++.h>using namespace std;const int maxn = 2e5 + 5;map<string,int> mp; int index = 1;int get(string s){// 将字符串对应为数字 if(mp[s]){return mp[s];}else{mp[s] = index++;return mp[s];}}int N,M;int peo[maxn]; // peo[i] 记入i 管理节点 老人的数量 vector<int> G[maxn];int fa[maxn];// 老人所在的管理节点 int dfs(int pos){int res = peo[pos];for(auto u : G[pos]){res += dfs(u);}return res;}int main(){cin>>N>>M;while(M--){string a,b;cin>>a>>b;int x = get(a);int y = get(b);if(a[0] >= '0' && a[0] <= '9'){peo[y]++;fa[x] = y;}else{G[y].push_back(x);}}char opt;while(cin>>opt){if(opt == 'E') break;string w,des;if(opt == 'Q'){cin>>w;int res = dfs(get(w));cout<<res<<"\n";}else if(opt == 'T'){cin>>w >> des;int id = get(w);int dd = get(des);peo[fa[id]]--; // 转出fa[id] = dd;peo[dd]++; // 转入}} }

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。