Codeforces 501C Misha and Forest 拓扑序
来源:互联网 发布:手机店刷机解锁软件 编辑:程序博客网 时间:2024/05/03 21:35
点击打开链接
题意:n个点组成的森林,n<=6e4,给出n个点度数和s[v]:与v相邻点的异或值,求出森林的边
若v的degree为1,则有边v->s[v],按照拓扑序遍历树,依次更新出边即可
#include <bits/stdc++.h>using namespace std;typedef pair<int,int> ii;const int N=2e5+20;int n,d[N],s[N],vis[N];queue<int> q;vector<ii> ans;void Topo(){memset(vis,0,sizeof(vis));for(int i=0;i<n;i++){if(d[i]==1)q.push(i),vis[i]=1;}while(!q.empty()){int u=q.front();q.pop();//d[u]若为0 则u->s[u]的边已经添加 if(d[u]==0)continue;ans.push_back(ii(u,s[u]));d[s[u]]--;s[s[u]]^=u;//删除点u后,更新结点s[u] if(vis[s[u]]==0&&d[s[u]]==1)q.push(s[u]),vis[s[u]]=1;}}int main(){while(cin>>n){ans.clear(); for(int i=0;i<n;i++)scanf("%d%d",&d[i],&s[i]);Topo();cout<<ans.size()<<endl;for(int i=0;i<ans.size();i++)cout<<ans[i].first<<' '<<ans[i].second<<endl;}return 0;}
0 0
- Codeforces 501C Misha and Forest 拓扑序
- CodeForces 501C Misha and Forest
- Codeforces 501C - Misha and Forest (机智)
- 【codeforces 501 C Misha and Forest】
- CodeForces 501C Misha and Forest
- codeforces 501 C. Misha and Forest (思维)
- codeforces#285--C - Misha and Forest(拓扑排序变形)
- CodeForces 501C Misha and Forest (STL queue)(拓扑排序)
- codeforces 501C Misha and Forest(思维题)
- codeforces 501C Misha and Forest(找边)
- Codeforces 501C Misha and Forest【bfs+位运算】
- CodeForces 501C Misha and Forest(异或和)
- Codeforces Round #285 C. Misha and Forest
- Misha and Forest CodeForces
- C - Misha and Forest
- codeforce #501 c Misha and Forest
- Codeforces Round #285 (Div. 2) C. Misha and Forest
- Codeforces Round #285 (Div. 2) C - Misha and Forest
- java集合类
- linux常用指令之一:grep与正则使用样例
- 二叉搜索树
- PHP-$GET/$REQUEST/$POST
- Eclipse+CXF框架开发Web服务实战
- Codeforces 501C Misha and Forest 拓扑序
- 编译原理词法分析器
- 数学
- 大华摄像头二次开发总结
- Servlet基础
- 数据结构与算法---约瑟夫问题
- java简单密码破解
- ThinkPHP中表单令牌的设置步骤
- java 静态导入机制