题意: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的更多相关文章

  1. 有关“数据统计”的一些概念 -- PV UV VV IP跳出率等

    有关"数据统计"的一些概念 -- PV UV VV IP跳出率等 版权声明:本文为博主原创文章,未经博主允许不得转载. 此文是本人工作中碰到的,随时记下来的零散概念,特此整理一下. ...

  2. 《Note --- Unreal 4 --- B project --- Second UV issue》

    Second uv 可以通过editor来生成: 这部分内容都是在staticMeshEditor这个文件夹下面的代码里: 关于UI的相应机制,有个文件UICommandList.cpp例如我点击st ...

  3. UV动画

    [猫猫的Unity Shader之旅]之纹理映射 http://blog.csdn.net/dbtxdxy/article/details/46954417 [猫猫的Unity Shader之旅]之U ...

  4. PV、UPV、UV简介

    1.PV: PV的全称是Pageview,中文的意思是:综合浏览量. 浏览量.页面的浏览次数,衡量网站用户访问的网页数量,用户每打开/刷新一次页面就记录一次,多 次打开会累计. 2.UPV: UPV的 ...

  5. 互联网中一些常用指标(PV、UV、蹦失率、转换率、退出率)

    1) PV:PageView  页面点击量,每次刷新就算一次浏览,多次打开同一页面会累加. 通常是衡量网站的主要指标. 2)UV:Unique  Visitor一天内访问网站的人数(是以cookie为 ...

  6. PV IP UV的概念介绍

    IP(独立IP):指独立IP数,不同的IP地址的计算机访问网站的总次数,这个是网站流量分析的一个重要指标.00:00-24:00内相同的IP地址只被计算一次 假如说:赶集网的日独立IP300W,则至少 ...

  7. 什么是UV?

    转自http://www.cnblogs.com/jenry/p/4083415.html 1.什么是UV?   对于三维模型,有两个最重要的坐标系统,一是顶点的位置(X,Y,Z)坐标,另一个就是UV ...

  8. u3d_Shader_effects笔记5 第二章 通过UV,进行纹理移动

    1.前面心情 公司最近打包,像我等小弟闲着,看代码容易困,没事偷着学shader,不过还是要多交流才行. 2.本文参考 这次参考比较多:由texture uv延伸问题多,主要是不明白变量定义: htt ...

  9. PV、UV、IP之间的区别与联系

    先看图: 1.什么是PV值 PV(page view)即页面浏览量或点击量,是衡量一个网站或网页用户访问量.具体的说,PV值就是所有访问者在24小时(0点到24点)内看了某个网站多少个页面或某个网页多 ...

随机推荐

  1. 字符串匹配--manacher算法模板

    manacher算法主要是处理字符串中关于回文串的问题的,它可以在 O(n) 的时间处理出以字符串中每一个字符为中心的回文串半径,由于将原字符串处理成两倍长度的新串,在每两个字符之间加入一个特定的特殊 ...

  2. Java条形码生成技术-Barcode4j

    背景 目前二维码的应用场景已经遍布各类互联网平台,通常是将产品/商品的唯一编号存储于二维码中以做扫码识别. 而用于生产环境的条形码技术仍然存在,如硬件设备制造.供应.物流运输等等. 在常见的产品信息管 ...

  3. linux下的vim使用教程

    命令历史 以:和/开头的命令都有历史纪录,可以首先键入:或/然后按上下箭头来选择某个历史命令. 启动vim 在命令行窗口中输入以下命令即可 vim 直接启动vim vim filename 打开vim ...

  4. SQL 养成一个好习惯是一笔财富

    来源:MR_ke 链接:http://www.cnblogs.com/MR_ke/archive/2011/05/29/2062085.html 我们做软件开发的,大部分人都离不开跟数据库打交道,特别 ...

  5. centos修改hostname以及时间同步

    centos修改hostname 方法一: 执行命令:hostname test 则修改hostname为test 方法二: 永久修改hostname vi /etc/sysconfig/networ ...

  6. pl/sql和sql的区别

    源地址:https://zhidao.baidu.com/question/187511430.html 1 sql(数据定义语言) 和PL/Sql的区别:答:SQL是结构化查询语言,比较接近自然语言 ...

  7. silverlight 鼠标事件处理

    托管代码注册鼠标事件 不需要再.xaml中声明注册事件. .xaml <Ellipse Name=" Fill="Orange" Canvas.Top=" ...

  8. jquery是如何架构的.

    心里一直有个疑问. jquery是如何做到一个jQuery即可以当方法用比如$();又可以当对象用$.extend(); 现在总结一下吧 function method(){} var m=new m ...

  9. Intel汇编语言程序设计学习笔记1

    第一章 汇编器链接器:汇编器将汇编语言翻译成机器语言,链接器将单个文件合并为可执行文件 intel 80X86系列处理器的汇编语言与VAX或者motorala 68x00等系统的汇编是否相同?不相同, ...

  10. mysql数据库连接方式(.net)

    1.通过ado.net连接(数据库连接串中库名称为中文无法使用) 需要添加MySql.Data.dll(可通过安装mysql-connector-net-6.8.3.mis获得) 引用MySql.Da ...