比较简单的题。
考虑一个边双,我们可以巧妙给边定向让它变成一个强连通分量。做法是搞个dfs树,树边从父亲往儿子,非树边从儿子往父亲,容易证明这样一定合法。
于是我们可以把边双缩起来得到一棵树,问题就变成给树边定向,这个随便判一下就好了。

#include <bits/stdc++.h>
#define FR first
#define SE secondusing namespace std;typedef pair<int,int> pr;struct Edge {int t,next;Edge() {}Edge(int a,int b):t(a),next(b) {}
};Edge e[400005];
int head[200005];
bool vis[200005];int dfn[200005],low[200005],dfs_cnt;void dfs1(int x,int fa) {dfn[x]=low[x]=++dfs_cnt;for(int i=head[x];i;i=e[i].next)if (((i+1)>>1)!=fa) {int u=e[i].t;if (!dfn[u]) {dfs1(u,(i+1)>>1);low[x]=min(low[x],low[u]);if (low[u]>dfn[x]) vis[(i+1)>>1]=1;}else low[x]=min(low[x],dfn[u]);}
}int id[200005],bcc_cnt;
vector <int> ee[200005];void dfs2(int x) {id[x]=bcc_cnt;for(int i=head[x];i;i=e[i].next)if (!id[e[i].t]&&!vis[(i+1)>>1]) dfs2(e[i].t);
}int fa[200005][20],dep[200005],bel[200005],cnt;
int sum1[200005],sum2[200005];void dfs3(int x) {bel[x]=cnt;for(int i=0;i<ee[x].size();i++)if (ee[x][i]!=fa[x][0]) {int u=ee[x][i];fa[u][0]=x;dep[u]=dep[x]+1;for(int j=1;j<20;j++) fa[u][j]=fa[fa[u][j-1]][j-1];dfs3(u);}
}int lca(int x,int y) {if (dep[x]<dep[y]) swap(x,y);int d=dep[x]-dep[y];for(int i=0;i<20;i++)if ((d>>i)&1) x=fa[x][i];if (x==y) return x;for(int i=19;i>=0;i--)if (fa[x][i]!=fa[y][i]) {x=fa[x][i];y=fa[y][i];}return fa[x][0];
}void dfs4(int x) {for(int i=0;i<ee[x].size();i++)if (ee[x][i]!=fa[x][0]) {int u=ee[x][i];dfs4(u);sum1[x]+=sum1[u];sum2[x]+=sum2[u];}
}int main() {int n,m,k;scanf("%d%d%d",&n,&m,&k);for(int i=1;i<=m;i++) {int x,y;scanf("%d%d",&x,&y);e[2*i-1]=Edge(y,head[x]);head[x]=2*i-1;e[2*i]=Edge(x,head[y]);head[y]=2*i;}for(int i=1;i<=n;i++)if (!dfn[i]) dfs1(i,0);for(int i=1;i<=n;i++)if (!id[i]) {bcc_cnt++;dfs2(i);}for(int i=1;i<=n;i++)for(int j=head[i];j;j=e[j].next)if (id[i]!=id[e[j].t]) ee[id[i]].push_back(id[e[j].t]);for(int i=1;i<=bcc_cnt;i++)if (!bel[i]) {cnt++;dfs3(i);}for(int i=1;i<=k;i++) {int x,y;scanf("%d%d",&x,&y);x=id[x];y=id[y];if (bel[x]!=bel[y]) {puts("No");return 0;}int p=lca(x,y);sum1[x]++;sum1[p]--;sum2[y]++;sum2[p]--;}for(int i=1;i<=bcc_cnt;i++)if (!fa[i][0]) dfs4(i);for(int i=1;i<=bcc_cnt;i++)if (sum1[i]&&sum2[i]) {puts("No");return 0;}puts("Yes");return 0;
}

Codeforces 555E相关推荐

  1. [Codeforces 555E]Case of Computer Network(Tarjan求边-双连通分量+树上差分)

    [Codeforces 555E]Case of Computer Network(Tarjan求边-双连通分量+树上差分) 题面 给出一个无向图,以及q条有向路径.问是否存在一种给边定向的方案,使得 ...

  2. CodeForces 375D Tree and Queries

    传送门:https://codeforces.com/problemset/problem/375/D 题意: 给你一颗有根树,树上每个节点都有其对应的颜色,有m次询问,每次问你以点v为父节点的子树内 ...

  3. 「日常训练」Bad Luck Island(Codeforces Round 301 Div.2 D)

    题意与分析(CodeForces 540D) 是一道概率dp题. 不过我没把它当dp做... 我就是凭着概率的直觉写的,还好这题不算难. 这题的重点在于考虑概率:他们喜相逢的概率是多少?考虑超几何分布 ...

  4. 【codeforces 812C】Sagheer and Nubian Market

    [题目链接]:http://codeforces.com/contest/812/problem/C [题意] 给你n个物品; 你可以选购k个物品;则 每个物品有一个基础价值; 然后还有一个附加价值; ...

  5. CodeForces 获得数据

    针对程序的输出可以看见 CodeForces :当输入.输出超过一定字符,会隐藏内容 所以:分若干个程序进行输入数据的获取 1. 1 for (i=1;i<=q;i++) 2 { 3 scanf ...

  6. codeforces水题100道 第二十七题 Codeforces Round #172 (Div. 2) A. Word Capitalization (strings)...

    题目链接:http://www.codeforces.com/problemset/problem/281/A 题意:将一个英文字母的首字母变成大写,然后输出. C++代码: #include < ...

  7. CodeForces 595A

    题目链接: http://codeforces.com/problemset/problem/595/A 题意: 一栋楼,有n层,每层有m户,每户有2个窗户,问这栋楼还有多少户没有睡觉(只要一个窗户灯 ...

  8. codeforces A. Jeff and Digits 解题报告

    题目链接:http://codeforces.com/problemset/problem/352/A 题目意思:给定一个只有0或5组成的序列,你要重新编排这个序列(当然你可以不取尽这些数字),使得这 ...

  9. Codeforces Round #506 (Div. 3)

    Codeforces Round #506 (Div. 3) 实习期间事不多,对div3 面向题解和数据编程了一波 A. Many Equal Substrings 题目链接 A题就是找后缀和前缀重合 ...

最新文章

  1. MAC OS X的ACL扩展权限设置
  2. 【冷门实用小工具】JAVA和C#轻量级的UML图绘制工具NClass,UML类图编辑器免安装版【亲测有效】
  3. MS SQL SERVER 中几个函数的用法
  4. 开发和使用Web用户控件
  5. CSV文件读取和处理
  6. SAP转储订单(STO)
  7. 225. Implement Stack using Queues
  8. [Err] ORA-00979: not a GROUP BY expression
  9. leetcode412. Fizz Buzz
  10. vue中简单的小插曲
  11. AlexNet卷积神经网络
  12. PATB 1038. 统计同成绩学生(20)
  13. 2017 部门文化宣贯会议内容
  14. Python中操作myslq的方法
  15. 用冰封服务器安装系统,冰封一键重装系统怎么使用 冰封一键重装系统使用教程...
  16. 小米蓝牙耳机持续白灯_小米蓝牙耳机不能自动串联问题
  17. 基于django的图书商城管理系统毕业设计源码110938
  18. 基于Kotlin、ViewModel、LiveData和LifeCycle开发的Readhub客户端
  19. 在WIN2012R2和WIN2016服务器打开网站慢的解决方法
  20. 通用技术机械图尺寸标注高考必看知识点

热门文章

  1. 人力资源管理系统(eHR)有何作用?
  2. 量化择时——平均K线图双均线策略(第1部分—策略效果测算)
  3. 数据库设计:SQL server 网上图书管理系统
  4. 达摩院2023年十大科技趋势预测,第一个太火了!
  5. 3.按键控制LED灯亮灭
  6. android测试qq,Android平台手机QQ和360手机卫士测试
  7. AUTOSAR网络管理
  8. 121 买股票的最佳时机
  9. C#控制台简单魔塔小游戏
  10. 苹果电脑macos Monterey 12.1(21C52)dmg原版引导版镜像下载