小美认为,在人际交往中,但是随着时间的流逝,朋友的关系也是会慢慢变淡的,最终朋友关系就淡忘了。 现在初始有一些朋友关系,存在一些事件会导致两个人淡忘了他们的朋友关系。小美想知道某一时刻中,某两人是否可以通过朋友介绍互相认识? 事件共有 2 种: 1 u v:代表编号 u 的人和编号 v 的人淡忘了他们的朋友关系。 2 u v:代表小美查询编号 u 的人和编号 v 的人是否能通过朋友介绍互相认识。 注:介绍可以有多层,比如 2 号把 1 号介绍给 3 号,然后 3 号再把 1 号介绍给 4 号,这样 1 号和 4 号就认识了。

区块链毕设网qklbishe.com为您提供问题的解答

小美认为,在人际交往中,但是随着时间的流逝,朋友的关系也是会慢慢变淡的,最终朋友关系就淡忘了。
现在初始有一些朋友关系,存在一些事件会导致两个人淡忘了他们的朋友关系。小美想知道某一时刻中,某两人是否可以通过朋友介绍互相认识?
事件共有 2 种:
1 u v:代表编号 u 的人和编号 v 的人淡忘了他们的朋友关系。
2 u v:代表小美查询编号 u 的人和编号 v 的人是否能通过朋友介绍互相认识。

注:介绍可以有多层,比如 2 号把 1 号介绍给 3 号,然后 3 号再把 1 号介绍给 4 号,这样 1 号和 4 号就认识了。

判断点连通第一时间并查集,因为过程是删边并查集很难处理,所以考虑从后往前遍历查询来不断加边。

笔试的时候debug半天没A出来,最后一想果然是重边的问题,以及点的编号1e9也是比较烦人的点。

#include  #include  #include  #include  #include  #include  using namespace std; using ll = long long; ll n,m,q; unordered_mapfa; map,int>mp; int Find(int a){     if(a == fa[a]){         return a;     }     return fa[a] = Find(fa[a]); } void unite(int a,int b){     a = Find(a);     b = Find(b);     fa[a] = b; } void solve(){     for(int i = 1,u,v;i <= m;++i){         cin >> u >> v;         fa[u] = u;         fa[v] = v;         mp[{u,v}]++;         mp[{v,u}]++;     }     stack>s;     for(int i = 1,op,u,v;i <= q;++i){         cin >> op >> u >> v;         s.push(make_tuple(op,u,v));         if(op == 1){             mp[{u,v}]--;             mp[{v,u}]--;         }     }     // std::get(s.top());     for(auto& edge : mp){         if(edge.second > 0){             unite(edge.first.first,edge.first.second);         }     }     stackans;     while(!s.empty()){         auto p = s.top();         s.pop();         if(std::get(p) == 1){             mp[{get(p),get(p)}]++;             mp[{get(p),get(p)}]++;             if(mp[{get(p),get(p)}] > 0)                 unite(std::get(p),std::get(p));         }         else{             if(fa[std::get(p)] == 0 || fa[std::get(p)] == 0){                 ans.push("No");                 continue;             }             ans.push(Find(std::get(p)) == Find(std::get(p)) ? "Yes" : "No");         }     }     while(!ans.empty()){         cout << ans.top() << "n";         ans.pop();     } } int main() {     int a, b;     while (cin >> n >> m >> q) {         solve();     } }

30:06

以上就是关于问题小美认为,在人际交往中,但是随着时间的流逝,朋友的关系也是会慢慢变淡的,最终朋友关系就淡忘了。
现在初始有一些朋友关系,存在一些事件会导致两个人淡忘了他们的朋友关系。小美想知道某一时刻中,某两人是否可以通过朋友介绍互相认识?
事件共有 2 种:
1 u v:代表编号 u 的人和编号 v 的人淡忘了他们的朋友关系。
2 u v:代表小美查询编号 u 的人和编号 v 的人是否能通过朋友介绍互相认识。

注:介绍可以有多层,比如 2 号把 1 号介绍给 3 号,然后 3 号再把 1 号介绍给 4 号,这样 1 号和 4 号就认识了。的答案

欢迎关注区块链毕设网-
专业区块链毕业设计成品源码,定制。

区块链NFT链游项目方科学家脚本开发培训

承接区块链项目定制开发

微信:btc9767

QQ :1330797917

TELEGRAM: BTCOK9

承接区块链项目定制开发


qklbishe.com区块链毕设代做网专注|以太坊fabric-计算机|java|毕业设计|代做平台-javagopython毕设 » 小美认为,在人际交往中,但是随着时间的流逝,朋友的关系也是会慢慢变淡的,最终朋友关系就淡忘了。 现在初始有一些朋友关系,存在一些事件会导致两个人淡忘了他们的朋友关系。小美想知道某一时刻中,某两人是否可以通过朋友介绍互相认识? 事件共有 2 种: 1 u v:代表编号 u 的人和编号 v 的人淡忘了他们的朋友关系。 2 u v:代表小美查询编号 u 的人和编号 v 的人是否能通过朋友介绍互相认识。 注:介绍可以有多层,比如 2 号把 1 号介绍给 3 号,然后 3 号再把 1 号介绍给 4 号,这样 1 号和 4 号就认识了。