POJ2762 UV
题意:n个山洞,对于每两个山洞s,e,都满足s可以到达e或者e可以到达s,则输出Yes,否则输出No。
————————————————————————————————————————
第一个缩点的题目,道理早就明白,从来没写过。
首先,有些点是可以互通的,在强连通分量里面,所以强连通分量缩点。
方法:
1、tarjan,求出各个点分别属于哪一个分量。
2、读取所有的边,判断边的两点是否属于不同分量,不同则在两个分量间建边。
然后,只能有一个点入读为了0,所有点初读都不大于1,输出“yes”,否则输出"no".
————————————————————————————————————————
//utovorvtou
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<stack> using namespace std;
const int maxm=;
const int maxn=;
int T,n,m;
struct edge
{
int u,v,next;
}e[maxm],ee[maxm];
int head[maxn],js,headd[maxn],jss;
bool ins[maxn];
int visx,sshu;
int dfsn[maxn],low[maxn],belong[maxn];
int rudu[maxn],chudu[maxn];
stack<int>st; void init()
{
memset(head,,sizeof(head));
js=;
memset(headd,,sizeof(headd));
jss=;
memset(ins,,sizeof(ins));
while(!st.empty())st.pop();
visx=;
sshu=;
memset(dfsn,-,sizeof(dfsn));
memset(low,-,sizeof(low));
memset(rudu,,sizeof(rudu));
memset(chudu,,sizeof(chudu));
}
void addage(int u,int v,edge e[],int &js,int head[])
{
e[++js].u=u;e[js].v=v;
e[js].next=head[u];head[u]=js;
}
void tarjan(int u)
{
dfsn[u]=low[u]=++visx;
ins[u]=;
st.push(u);
for(int j=head[u];j;j=e[j].next)
{
int v=e[j].v;
if(dfsn[v]==-)
{
tarjan(v);
if(low[v]<low[u])low[u]=low[v];
}
else if(ins[v] && low[u]>dfsn[v])low[u]=dfsn[v];
}
int j;
if(low[u]==dfsn[u])
{
sshu++;
do
{
j=st.top();
st.pop();
ins[j]=;
belong[j]=sshu;
}while(j!=u);
}
}
stack<int>s;
bool topo()
{
int tp=,maxt=;
for(int i=;i<=sshu;i++)
{
if(rudu[i]==)
{
tp++; }
if(chudu[i]>maxt)maxt=chudu[i]; }
if(tp>)return ;
if(maxt>)return ;
return ;
}
int main()
{
cin>>T;
while(T--)
{
scanf("%d%d",&n,&m);
init();
for(int u,v,i=;i<m;i++)
{
scanf("%d%d",& u,&v);
addage(u,v,e,js,head);
}
for(int i=;i<=n;i++)
{
if(dfsn[i]==-)tarjan(i);
}
for(int i=;i<=js;i++)
{
int u=e[i].u,v=e[i].v;
if(belong[u]!=belong[v])
{
addage(belong[u],belong[v],ee,jss,headd);
rudu[belong[v]]++;chudu[belong[u]]++;
}
}
if(topo()==)printf("Yes\n");else printf("No\n");
}
return ;
}
POJ2762 UV的更多相关文章
- 有关“数据统计”的一些概念 -- PV UV VV IP跳出率等
有关"数据统计"的一些概念 -- PV UV VV IP跳出率等 版权声明:本文为博主原创文章,未经博主允许不得转载. 此文是本人工作中碰到的,随时记下来的零散概念,特此整理一下. ...
- 《Note --- Unreal 4 --- B project --- Second UV issue》
Second uv 可以通过editor来生成: 这部分内容都是在staticMeshEditor这个文件夹下面的代码里: 关于UI的相应机制,有个文件UICommandList.cpp例如我点击st ...
- UV动画
[猫猫的Unity Shader之旅]之纹理映射 http://blog.csdn.net/dbtxdxy/article/details/46954417 [猫猫的Unity Shader之旅]之U ...
- PV、UPV、UV简介
1.PV: PV的全称是Pageview,中文的意思是:综合浏览量. 浏览量.页面的浏览次数,衡量网站用户访问的网页数量,用户每打开/刷新一次页面就记录一次,多 次打开会累计. 2.UPV: UPV的 ...
- 互联网中一些常用指标(PV、UV、蹦失率、转换率、退出率)
1) PV:PageView 页面点击量,每次刷新就算一次浏览,多次打开同一页面会累加. 通常是衡量网站的主要指标. 2)UV:Unique Visitor一天内访问网站的人数(是以cookie为 ...
- PV IP UV的概念介绍
IP(独立IP):指独立IP数,不同的IP地址的计算机访问网站的总次数,这个是网站流量分析的一个重要指标.00:00-24:00内相同的IP地址只被计算一次 假如说:赶集网的日独立IP300W,则至少 ...
- 什么是UV?
转自http://www.cnblogs.com/jenry/p/4083415.html 1.什么是UV? 对于三维模型,有两个最重要的坐标系统,一是顶点的位置(X,Y,Z)坐标,另一个就是UV ...
- u3d_Shader_effects笔记5 第二章 通过UV,进行纹理移动
1.前面心情 公司最近打包,像我等小弟闲着,看代码容易困,没事偷着学shader,不过还是要多交流才行. 2.本文参考 这次参考比较多:由texture uv延伸问题多,主要是不明白变量定义: htt ...
- PV、UV、IP之间的区别与联系
先看图: 1.什么是PV值 PV(page view)即页面浏览量或点击量,是衡量一个网站或网页用户访问量.具体的说,PV值就是所有访问者在24小时(0点到24点)内看了某个网站多少个页面或某个网页多 ...
随机推荐
- [转载]BT656/BT601/BT1120协议
[转载] BT656/BT601/BT1120协议以及DM365/DM355/DM6467上使用的YUV颜色空间说明 ITU-R BT.601和ITU-RBT.656国际电信联盟(Interna ...
- lua脚本教程
--[[工具准备 1.一个支持UTF8无BOM编码的工具,例如:notepad++ 2.一个多文件搜索关键字的工具,例如:File Seeker 3.Eluna对应端的源码 ]]-- --[[网站相关 ...
- Linux系统常用命令
查找在linux的软件装到哪上面去了,用这个命令dpkg用dpkg命令,比如查pcmanfm这个软件安装到什么地方了用 dpkg -L pcmanfm
- 安装初始化mysql后,默认几个库介绍
背景介绍: 当我们安装初始化mysql后,默认建了几个数据库,那么这些数据库有什么作用呢?mysql> show databases;+--------------------+| Datab ...
- TTS多音字问题
今天在CSDN上找到了解决方案,终于解决了多音字问题. Text1.Text = "<pron sym='jia 3'> 贾</pron>宝玉,商<pron ...
- Android画图Path的使用
/** * Paint类介绍 * * Paint即画笔,在绘图过程中起到了极其重要的作用,画笔主要保存了颜色, * 样式等绘制信息,指定了如何绘制文本 ...
- python Data type conversation
>>> repr(111.5) '111.5' >>> repr(10) ' >>> int(") 11 >>> lo ...
- 使用Visual Studio Code搭建TypeScript开发环境
使用Visual Studio Code搭建TypeScript开发环境 1.TypeScript是干什么的 ? TypeScript是由微软Anders Hejlsberg(安德斯·海尔斯伯格,也是 ...
- 用DotNetBar设计的 Gradient Buttons 漂亮按钮
http://www.webdesignerwall.com/demo/css-buttons.html public class GradientButtons : DevComponents ...
- [solr] - SolrJ增删查
使用SolrJ进行对Solr的增.删.查功能. 参考引用: http://wiki.apache.org/solr/Solrj Eclipse中新建一个项目:TestSolr 其中SorlJ的Lib包 ...