CODE[VS] 1036商务旅行
来源:互联网 发布:好听的网络歌手歌曲 编辑:程序博客网 时间:2024/06/05 10:18
#include <iostream>#include <cstdio>#include <vector>#include <cstring>using namespace std;const int MAXN = 30000 + 10;int head[MAXN],f[MAXN],from[MAXN*2],to[MAXN*2],deep[MAXN],tt;vector<int> query[MAXN];bool vis[MAXN];int n,m,ans;int find(int x){ return f[x] == x ? x:f[x] = find(f[x]);}void addEdge(int u,int v){ from[++tt] = v,to[tt] = head[u],head[u] = tt; from[++tt] = u,to[tt] = head[v],head[v] = tt;}void lca(int x,int d){ deep[x] = d; for(int i = head[x]; i; i=to[i]) if(!deep[from[i]]) { lca(from[i],d+1); f[from[i]] = x; } for(int i = 0; i<(int)query[x].size(); i++) { int v = query[x][i]; if(vis[v]) { int tf = find(v); ans += deep[x] + deep[v] - deep[tf]*2; } } vis[x] = true;}int main(){ while(scanf("%d",&n) !=EOF) { tt = 0; int a,b; for(int i = 1; i<=n-1; i++) { scanf("%d %d",&a,&b); addEdge(a,b); } scanf("%d",&m); scanf("%d",&a); for(int i = 1; i<m; i++) { scanf("%d",&b); query[a].push_back(b); query[b].push_back(a); a = b; } for(int i = 0; i<=n; i++) f[i] = i; memset(vis,false,sizeof(vis)); memset(deep,0,sizeof(deep)); ans = 0; lca(1,1); printf("%d\n",ans); } return 0;}
阅读全文
0 0
- 商务旅行 code[vs] 1036
- CODE[VS] 1036商务旅行
- CODE[VS] 1036 商务旅行(LCA + BFS)
- 倍增LCA code[vs]1036商务旅行
- 1036商务旅行
- 1036 商务旅行
- 1036 商务旅行
- 1036 商务旅行
- wikioi 1036 商务旅行
- 【wikioi】1036商务旅行
- Codevs 1036 商务旅行
- Codves 1036 商务旅行
- 【codevs 1036】商务旅行
- Codevs 1036 商务旅行
- codevs 1036 商务旅行
- 【codevs 1036】商务旅行
- 【codevs 1036】商务旅行
- codevs 1036 商务旅行 (lca)
- 借助Nginx搭建反向代理服务器
- Python3远程连接腾讯云ubuntu下的MongoDb
- 使用jenkins搭建自动化打包的apk 下载
- 警告: [unchecked] 未经检查的转换
- python字符串处理函数汇总
- CODE[VS] 1036商务旅行
- Windows环境变量
- Flask mysql tornado bootstrap layer小实例
- 【ccf-201703-5】引水入城
- redis基本操作命令
- oracle 客户端报错 ORA-12514
- 用SSIS把EXECEL表导入到SQLSERVER数据库
- angular路由小结
- js的一些坑