POJ1470 LCA(tarjan离线求最近公共祖先)
来源:互联网 发布:sql注入语句怎么使用 编辑:程序博客网 时间:2024/06/05 06:53
- #include<cstdio>
- #include<cstring>
- const int N = 910;
- struct Edge{
- int e,next;
- }edge[2*N];
- int n,m,e_num,head[N],vis[N],cnt[N];
- int x[N*N],y[N*N],f[N*N];
- void AddEdge(int a,int b){
- edge[e_num].e=b; edge[e_num].next=head[a]; head[a]=e_num++;
- edge[e_num].e=a; edge[e_num].next=head[b]; head[b]=e_num++;
- }
- int findx(int x){
- if(f[x]!=x)return f[x]=findx(f[x]);
- return f[x];
- }
- void tarjan(int k){
- int i;
- vis[k]=1;
- f[k]=k;
- for(i=1;i<=m;i++){//遍历处理刚才保存的 m 个询问
- if(x[i]==k && vis[y[i]])cnt[findx(y[i])]++;
- if(y[i]==k && vis[x[i]])cnt[findx(x[i])]++;
- }
- for(i=head[k];i!=-1;i=edge[i].next){
- if(!vis[edge[i].e]){
- tarjan(edge[i].e);
- f[edge[i].e]=k;
- }
- }
- }
- int main()
- {
- int i,t,id,a,flag[N];
- char ch1[2],ch2[2],ch3[2];
- while(~scanf("%d",&n))
- {
- e_num=0;
- for(i=1;i<=n;i++){
- flag[i]=vis[i]=cnt[i]=0;
- head[i]=-1;
- }
- for(i=1;i<=n;i++){
- scanf("%d%1s%1s%d%1s",&id,ch1,ch2,&t,ch3);
- while(t--){
- scanf("%d",&a);
- flag[a]=1;
- AddEdge(id,a);
- }
- }
- scanf("%d",&m);
- for(i=1;i<=m;i++)
- scanf("%1s%d%d%1s",ch1,&x[i],&y[i],ch2);
- for(i=1;i<=n;i++)//注意,这里,根节点不一定是 1
- if(flag[i]==0)break;
- tarjan(i);
- for(i=1;i<=n;i++)
- if(cnt[i])printf("%d:%d\n",i,cnt[i]);
- }
- return 0;
- }
阅读全文
0 0
- POJ1470 LCA(tarjan离线求最近公共祖先)
- Tarjan离线算法求最近公共祖先(LCA)
- Tarjan离线算法求最近公共祖先(LCA)
- Tarjan离线算法求最近公共祖先(LCA)
- LCA最近公共祖先(tarjan离线算法)
- [图论] LCA(最近公共祖先)Tarjan 离线算法
- LCA(最近公共祖先)离线算法Tarjan
- [图论] LCA(最近公共祖先)Tarjan 离线算法
- hdu2586 How far away? Tarjan(离线)算法求最近公共祖先LCA 待补完
- Tarjan算法求LCA(最近公共祖先)
- Tarjan算法求LCA(最近公共祖先)
- LCA最近公共祖先(RMQ、Tarjan)
- [算法] LCA 最近公共祖先 (Tarjan)
- POJ1986 DistanceQueries 最近公共祖先LCA 离线算法Tarjan
- POJ 1330 最近公共祖先LCA(Tarjan离线做法)
- LCA(最近公共祖先) 离线法(tarjan算法)
- LCA最近公共祖先问题(Tarjan离线算法)
- LCA(最近公共祖先)离线算法之tarjan
- 规划未来(上)
- 解决虚拟机安装ubuntu系统vmtools找不到安装文件
- ViewPager
- JS异步实现Generator
- 4-类型转换
- POJ1470 LCA(tarjan离线求最近公共祖先)
- POJ 1679 浅谈不严格次小生成树
- javascript引用数据类型和堆内存
- 2017年Java日志框架及工具综述
- BZOJ满框记录,排名999记录![BZOJ5040 的HINT]
- 利用Cookie进行自动登录相关代码
- The C Programming Language 练习题3-6
- Django
- git clone出错:error: RPC failed; curl 18 transfer closed with outstanding read data remaining