czl蒟蒻的模板库4——Tarjan
来源:互联网 发布:樱井知香作品在线播放 编辑:程序博客网 时间:2024/06/07 01:57
#include <bits/stdc++.h>using namespace std;const int maxn=500005;typedef long long ll;int n,m,s;int f[maxn];bool vis[maxn];int q1[maxn],q2[maxn];int ans[maxn];vector<int >e[maxn];inline void read(int &x) { x=0;int f=1;char ch=getchar(); while(!isdigit(ch)){if(ch=='-')f=-1;ch=getchar();} while(isdigit(ch))x=x*10+ch-'0',ch=getchar(); x*=f;}inline void read(ll &x) { x=0;int f=1;char ch=getchar(); while(!isdigit(ch)){if(ch=='-')f=-1;ch=getchar();} while(isdigit(ch))x=((x*10)+ch-'0'),ch=getchar(); x*=f;}void init(){ for(int i=1;i<=n;i++) { f[i]=i; vis[i]=0; }}int find(int now,int tra){// printf("now:%d\n",now); if(f[now]==now)return now; else if(f[now]==tra)return tra; return f[now]=find(f[now],tra);}void DFS(int now,int fa){ for(int i=0;i<(int)e[now].size();i++) { int u=e[now][i]; if(fa==u)continue; else { DFS(u,now); } } f[now]=fa; vis[now]=1; for(int i=1;i<=m;i++) { if(q1[i]==now) { if(vis[q2[i]]) { ans[i]=find(q2[i],now);// printf("%d\n",ans[i]); } } else if(q2[i]==now) { if(vis[q1[i]]) { ans[i]=find(q1[i],now);// printf("%d\n",ans[i]); } } } return ;}int main(){ read(n); read(m); read(s); init(); for(int i=1;i<=n-1;i++) { int f,t; read(f); read(t); e[f].push_back(t); e[t].push_back(f); } for(int i=1;i<=m;i++) { read(q1[i]); read(q2[i]); } DFS(s,s); for(int i=1;i<=m;i++) { printf("%d\n",ans[i]); } return 0;}
阅读全文
0 0
- czl蒟蒻的模板库4——Tarjan
- czl蒟蒻的模板库1——Dijkstra
- czl蒟蒻的模板库2——FASTIO
- czl蒟蒻的模板库3——KMP
- czl蒟蒻的模板库5——线段树
- czl蒟蒻的模板库6——倍增LCA
- czl蒟蒻的模板库7——最长公共子序列
- czl蒟蒻的模板库8——单调队列
- czl蒻蒟的OI之路4
- czl的知识点整理4——线段树
- czl蒻蒟的OI之路
- czl蒻蒟的OI之路2
- czl蒻蒟的OI之路3
- czl蒻蒟的OI之路5
- czl蒻蒟的OI之路6
- czl蒻蒟的一周总结(9.4~9.10)
- czl蒻蒟的OI之路7
- czl蒻蒟的OI之路8
- Handler内存泄漏
- 11.9
- 百度自动驾驶系统Apollo源码分析
- IOS-Quartz2D & CALayer & CAShapeLayer
- vc状态栏添加进度条
- czl蒟蒻的模板库4——Tarjan
- h5表格隔行换色
- RAM/DDR/ROM/FLASH/EMMC
- 只想说java很强大-indexOf
- HTML当前日期和倒计时展示
- spark windows环境下开发环境快速搭建。
- 一次性带你解决android 7.0之前所有相册选择图片问题
- Phoenix UDFs
- czl蒟蒻的模板库5——线段树