题意: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. main函数的简介

    ////  main函数的简介.h//  IOS笔记////  Created by .//  Copyright © 2015年  All rights reserved.// //#import ...

  2. bash的操作环境[转]

          Bash Shell 的操作环境: 是否记得我们登陆主机的时候,屏幕上头会有一些说明文字,告知我们的 Linux 版本啊什么的, 还有,登陆的时候我们还可以给予用户一些信息或者欢迎文字呢. ...

  3. 数迹学——Asp.Net MVC4入门指南(2):添加一个控制器

    自嘲一下......万事还是得从官方的入门开始 由于找不到适合新新手的MVC入门实例所以回过头来做一下微软的 <Asp.Net MVC4入门指南>. 只有把自己放在太阳下暴晒,才知道自己有 ...

  4. 从 Bootstrap 2.x 版本升级到 3.0 版本

    摘自http://v3.bootcss.com/migration/ Bootstrap 3 版本并不向后兼容 v2.x 版本.下面的章节是一份从 v2.x 版本升级到 v3.0 版本的通用指南.如需 ...

  5. Spring学习 Ioc篇(二 )

    5.spring依赖注入的方式 方法一:使用构造器方式进行注入 1.dao的类和接口 package com.cvicse.dao.impl; import com.cvicse.dao.Person ...

  6. 无法作为数据库主体执行,因为主体 "dbo" 不存在、无法模拟这种类型的主体,或您没有所需的权限。 已将数据库上下文更改为

    右键删除发布时报错信息: 其他信息:执行 Transact-SQL 语句或批处理时发生了异常. (Microsoft.SqlServer.ConnectionInfo)——————————无法作为数据 ...

  7. (C#) Interview Questions.

    (Note: Most are collected from Internet. 绝大部分内容来自互联网) 1. What's the difference between Hashtable and ...

  8. js 生成 yyyy-mm-dd 格式的逼格姿势

    关于 js 生成 yyyy-mm-dd 格式,往往都会采取手动拼接,一般不愿意为了小功能而去动用 momentjs 之类的插件. ps: 只分享简单方法,网上有 N 多 dateformat 代码,这 ...

  9. X-Cart 学习笔记(四)常见操作

    目录 X-Cart 学习笔记(一)了解和安装X-Cart X-Cart 学习笔记(二)X-Cart框架1 X-Cart 学习笔记(三)X-Cart框架2 X-Cart 学习笔记(四)常见操作 五.常见 ...

  10. 57. Jump Game && Jump Game II

    Jump Game Given an array of non-negative integers, you are initially positioned at the first index o ...