cf1276B
题意简述:给出无向图,会有重边,然后给你两个点a,b,让你计算有多少点对(x,y)满足从x到y的所有路径都经过a和b
题解:先从a,b两点出发进行dfs,dfs的过程中不能经过a,b两点(除了开始)
所有的点分为了三类,第一类是a能到但是b到不了,第二类是b能到但是a到不了,第三类是a,b都能到
首先每一类点的内部之间的点对对答案没有贡献,因为他们之间到达可以只经过a,b其中一个点
所以只需要考虑不同类之间的点对答案的贡献
第一类和第三类对答案没有贡献,因为对于点对x,y,x可以先a再到y,而不需要今过b点,因此没有贡献
同理第二类对第三类也没有贡献
第一类和第二类,他们相通必须经过a,b两点
因此答案就是第一类的点数×第二类的点数
const int maxn=2e5+5;
const int maxm=1e6+5;
const int inf=1e9; int n,m,a,b; int head[maxn],ver[maxm],nex[maxm],tot; void inline AddEdge(int x,int y){
ver[++tot]=y,nex[tot]=head[x],head[x]=tot;
} bool vis[maxn]; int cnt[maxn]; void dfs(int x,int f){
vis[x]=1;
cnt[x]+=f;
for(int i=head[x];i;i=nex[i]){
int y=ver[i];
if(!vis[y] && y!=a && y!=b) {
dfs(y,f);
}
}
} void solve(){
cin>>n>>m>>a>>b;
tot=0;
for(int i=1;i<=n;i++)
head[i]=0;
for(int i=0;i<m;i++){
int x,y;
scanf("%d%d",&x,&y);
AddEdge(x,y);
AddEdge(y,x);
}
for(int i=1;i<=n;i++)
vis[i]=cnt[i]=0;
dfs(a,1);
for(int i=1;i<=n;i++)
vis[i]=0;
dfs(b,2);
ll s1=0,s2=0;
for(int i=1;i<=n;i++){
// cout<<cnt[i]<<endl;
if(i!=a && i!=b) {
if(cnt[i]==1) s1++;
else if(cnt[i]==2) s2++;
}
}
//cout<<s1<<' '<<s2<<endl;
printf("%lld\n",s1*s2);
}
int main(){
int t;
cin>>t;
while(t--)
solve();
}
cf1276B的更多相关文章
- B. Two Fairs 解析(思維、DFS、組合)
Codeforce 1276 B. Two Fairs 解析(思維.DFS.組合) 今天我們來看看CF1276B 題目連結 題目 給一個連通圖,並給兩個點(\(a,b\)),求有多少點對使得:任一路徑 ...
随机推荐
- input输入框联想功能
一直想找一个可以连接后台,可以根据后台内容的input输入框,可以实现联想功能,网上找到一个简单的静态页面的输入框联想,经过一番修改之后终于可以实现读取自己定义的数组的联想了,其实也比较简单就是格式的 ...
- jenkins集成gitlab
一.配置jenkins 1.安装Gitlab Hook Plugin )生成随机token 在系统中生成 openssl rand -hex 0f2a47c861133916d2e299e3 )创建 ...
- Android整理:SQlite数据库的使用以及通过listView显示数据
前言:上个月与同学一起做了一个简单的Android应用,这段时间正好没有很多事情所以趁热整理一下学习到的知识,刚开始学习Android还有很多不懂的地方,继续努力吧! 作业中需要用到数据库,当然首选A ...
- Node——request使用代理
本文知识点 Node环境搭建 使用代理 进阶学习 环境配置 Node 安装request 安装request npm install request 确认环境安装无误 node -v 代码样例 使用代 ...
- Codeforces_851
A.分三种情况. #include<bits/stdc++.h> using namespace std; int n,k,t; int main() { ios::sync_with_s ...
- 题解【[HNOI2010]弹飞绵羊】
\[ \texttt{Description} \] 有 \(n\) 个弹力装置排成一排,第 \(i\) 个弹力装置的弹力系数是 \(k_i\) ,绵羊到第 \(i\) 个装置时,会被弹到第 \(i+ ...
- [信息安全] 05 X.509 公钥证书的格式标准
X.509是# 公钥证书的格式标准, 广泛用于TLS/SSL安全通信或者其他需要认证的环境中.X.509证书可以由# CA颁发,也可以自签名产生. 1 Overview {#1-overview} X ...
- Windows搭建IIS服务器使用NATAPP实现内网穿透
目的:外网可以访问本地网页. 步骤: 一.实现内网访问 1.Win+Q搜索[控制面板],选择[程序],点击[启用或关闭Windows功能], 2.勾选[Internet Information Ser ...
- node - 简单的爬虫案例
cherrio模块 安装 cnpm install cherrio 使用方法 const cheerio = require('cheerio') const $ = cheerio.load('&l ...
- wp8.1 学习笔记 001 动态生成图片 并更改图片位置
1.在xaml中划分表格 <Grid Name="gr"> <Grid.ColumnDefinitions> <ColumnDefinition> ...