首页 技术 正文
技术 2022年11月6日
0 收藏 796 点赞 305 浏览 1638 个字
#include <iostream>
#include <cstdio>
#include <sstream>
#include <cstring>
#include <map>
#include <set>
#include <vector>
#include <stack>
#include <queue>
#include <algorithm>
#include <cmath>
#define rap(i, a, n) for(int i=a; i<=n; i++)
#define MOD 2018
#define LL long long
#define ULL unsigned long long
#define Pair pair<int, int>
#define mem(a, b) memset(a, b, sizeof(a))
#define _ ios_base::sync_with_stdio(0),cin.tie(0)
//freopen("1.txt", "r", stdin);
using namespace std;
const int maxn = 5e5 + , INF = 0x7fffffff;
const int maxm = 1e6 + ;
int n, m, cnt1, cnt2, c;
int head1[maxm], head2[maxm], f[maxm], vis[maxm];
int res[maxm];struct node
{
int v, next;
}Node[maxm];struct edge
{
int v, id, next;
}Edge[maxm];void add1_(int u, int v)
{
Node[cnt1].v = v;
Node[cnt1].next = head1[u];
head1[u] = cnt1++;
}void add1(int u, int v)
{
add1_(u, v);
add1_(v, u);
}void add2_(int u, int v, int id)
{
Edge[cnt2].v = v;
Edge[cnt2].id = id;
Edge[cnt2].next = head2[u];
head2[u] = cnt2++;
}void add2(int u, int v, int id)
{
add2_(u, v, id);
add2_(v, u, id);
}int find(int x)
{
return f[x]==x?x:(f[x] = find(f[x]));
}int lca(int u)//把整棵树的一部分看作以节点x为根节点的小树
{
f[u] = u; //由于节点u被看作是根节点,所以把u的father设为它自己
vis[u] = ; //标记为已被搜索过
for(int i=head1[u]; i!=-; i=Node[i].next) //遍历所有与x相连的节点
{
node e = Node[i]; //若未被搜索
if(vis[e.v] == -)
{
lca(e.v); //以该节点为根节点搞小树
f[e.v] = u; //回溯回来后更新子结点的f
}
}
for(int i=head2[u]; i!=-; i=Edge[i].next) //搜索包含节点u的所有询问
{
edge e = Edge[i];
if(vis[e.v] != -) //如果另一节点已被搜索过 只有另一结点被搜索过 那一条路径的f才会更新
{
int k = find(e.v); //寻找最近公共祖先
res[e.id] = k;
}
}
}void init()
{
mem(head1, -);
mem(head2, -);
mem(res, -);
mem(vis, -);
cnt1 = cnt2 = ;
}int main()
{
while(scanf("%d%d%d", &n, &m, &c) != EOF)
{
init();
int u, v;
rap(i, , n-)
{
scanf("%d%d", &u, &v);
add1(u, v);
}
rap(i, , m)
{
scanf("%d%d", &u, &v);
add2(u, v, i);
} lca(c);
rap(i, , m)
{
if(res[i] == -) printf("Not connected\n");
else printf("%d\n", res[i]);
}
} return ;
}
相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,082
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,556
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,405
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,179
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,815
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,898