HDU 4547 lca
来源:互联网 发布:云计算ppt模板 编辑:程序博客网 时间:2024/05/23 19:11
一直只会离线的,今天学了下在线的
自己AC的4600+ms 试了下网上加了优化的2000+
#include<stdio.h>#include<vector>#include<algorithm>#include<map>#include<string.h>#include<iostream>using namespace std;const int maxn=100100;int n,m;int ind[maxn],dep[maxn],fa[maxn],vis[maxn],dis[maxn];struct node{ int v,w;};map<string,int> mp;vector<node> vec1[maxn];void init(){ for(int i=0;i<=n;i++) vec1[i].clear(); mp.clear(); memset(ind,0,sizeof(ind)); memset(fa,0,sizeof(fa)); memset(dep,-1,sizeof(dep)); memset(dis,0,sizeof(dis));}void dfs(int u,int f,int deep){ fa[u]=f; dep[u]=deep; for(int i=0;i<vec1[u].size();i++) { int v=vec1[u][i].v; if(v==f) continue; dis[v]=dis[u]+vec1[u][i].w; dfs(v,u,deep+1); }}int lca(int u,int v){ if(dep[u]<dep[v]) swap(u,v); while(dep[u]!=dep[v]) u=fa[u]; while(u!=v) { u=fa[u]; v=fa[v]; } return u;}int main(){ freopen("in.txt","r",stdin); int t; scanf("%d",&t); while(t--) { init(); scanf("%d%d",&n,&m); int i,j; string x,y; int k=1; for(i=0;i<n-1;i++) { cin>>x>>y; if(mp[x]==0) mp[x]=k++; if(mp[y]==0) mp[y]=k++; node tmp; tmp.v=mp[x]; tmp.w=1; vec1[mp[y]].push_back(tmp); fa[mp[x]]=mp[y]; ind[mp[x]]++; } for(i=1;i<=n;i++) { if(ind[i]==0) { dfs(i,-1,0); } } while(m--) { cin>>x>>y; if(mp[x]==mp[y]) { printf("0\n"); continue; } if(lca(mp[x],mp[y])==mp[x]) { printf("1\n"); continue; } if(lca(mp[x],mp[y])==mp[y]) printf("%d\n",dis[mp[x]]-dis[lca(mp[x],mp[y])]); else printf("%d\n",dis[mp[x]]-dis[lca(mp[x],mp[y])]+1); } } return 0;}
- hdu 4547(tarjan LCA)
- hdu 4547(tarjan LCA)
- hdu 4547(tarjan LCA)
- HDU 4547 lca
- HDU 4547 倍增LCA
- hdu 4547(LCA)
- hdu 4547(LCA+Tarjan)
- HDU-4547-离线LCA
- HDU 4547 CD操作 LCA
- Hdu 4547 CD操作 LCA问题
- hdu 4547 Tarjan LCA 离线算法
- HDU 4547 CD操作(LCA + BFS)
- hdu 4547 CD操作 LCA倍增算法
- hdu 4547 lca-tarjan离线算法
- hdu 2874(LCA应用)
- HDU 2586 LCA
- hdu 2874 (LCA)
- hdu 2856 (LCA)
- 数据库表字段变动时pb 需做的改动
- ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)解决办法
- C# 网页弹出对话框的几种方式
- list集合排序
- Visual Studio下C++第三方库的配置方法总结
- HDU 4547 lca
- Apache 地址与目录访问控制
- 菜单仿(ActionBar)
- android webview 访问https页面 SslError 处理
- 隐藏UITableView多余的分割线
- js window 常用
- 第14周项目一-Animal sounds
- 第十四周上机任务---程序阅读,理解函数
- SecureCRT中文乱码解决方案