当前位置: 首页 > 编程日记 > 正文

poj_2762,弱连通

http://poj.org/problem?id=2762

这题是求弱连通

弱连通就是无向图强连通(基图是有向图)

思路:先targan缩点,然后这些点求最长链

也就是这些点(缩点)在一棵树上,这棵树的深度应该为强连通分量个数。。

画个图就好理解了

#include<cstdio>
#include<cstring>const int maxn(1111);
struct Edge{int v, next;
}e1[maxn*6], e2[maxn*6];
int head1[maxn], cnt1, head2[maxn], cnt2;
int low[maxn], dfn[maxn], vis[maxn], belong[maxn];
int stack[maxn], step, color, top;
void init(){memset(head1, -1, sizeof head1);cnt1 = cnt2 = 0;memset(head2, -1, sizeof head2);memset(vis, 0, sizeof vis);memset(dfn, 0, sizeof dfn);memset(belong, -1, sizeof belong);step = color = top = 0;
}
void add_Edge(int u, int v){e1[cnt1].v = v, e1[cnt1].next = head1[u];head1[u] = cnt1 ++;
}
int n, m;
int f[maxn][maxn], ind[maxn];void targan(int u){dfn[u] = low[u] = ++ step;stack[top++] = u;vis[u] = 1;for(int i = head1[u]; i != -1; i = e1[i].next){int v = e1[i].v;if(!dfn[v]){targan(v);if(low[u] > low[v])low[u] = low[v];}elseif(vis[v] && low[u] > dfn[v])low[u] = dfn[v];}if(dfn[u] == low[u]){color ++;int s;do{s = stack[--top];vis[s] = 0;belong[s] = color;}while(s != u);}
}
void add_edge(int u, int v){e2[cnt2].v = v, e2[cnt2].next = head2[u];head2[u] = cnt2 ++;
}
int dp[maxn];
int cnt;
void dfs(int u){for(int i = head2[u]; i + 1; i = e2[i].next){int v = e2[i].v;if(dp[v] < dp[u] + 1)dp[v] = dp[u] + 1;if(dp[v] > cnt) cnt = dp[v];dfs(v);}
}
int check(){cnt = 0;int u;for(int i = 1; i <= color; i ++){if(ind[i] == 0){cnt ++;if(cnt > 1) return 0;u = i;}}/*cnt = 1;printf("%d\n", e2[u].next);while(e2[u].next != -1){cnt ++;u = e2[u].v;puts("|asdf");}*/memset(dp, 0, sizeof dp);cnt = 0;dfs(u);if(cnt == color - 1) return 1;return 0;
}
void solve(){for(int i = 1; i <= n; i ++)if(!dfn[i])targan(i);if(color == 1){puts("Yes");return;}memset(ind, 0, sizeof ind);memset(f, 0, sizeof f);for(int i = 1; i <= n; i ++){for(int j = head1[i]; j + 1; j = e1[j].next){int v = e1[j].v;int u = belong[i];v = belong[v];if(u != v && !f[u][v]){add_edge(u, v);ind[v] ++;f[u][v] = 1;}}}if(check())puts("Yes");elseputs("No");
}
int main(){int tcase;scanf("%d", &tcase);while(tcase --){init();scanf("%d%d", &n, &m);while(m --){int u, v;scanf("%d%d", &u, &v);add_Edge(u, v);}solve();}return 0;
}
/*
1
7 8
1 2
3 1
3 2
2 4
4 7
4 5
5 6
6 4
YES
*/

转载于:https://www.cnblogs.com/louzhang/archive/2012/09/06/2673224.html

相关文章:

tp数组转为json_数据存储—JSON

JSON文件存储JSON全称JavaScript Object Notation&#xff0c;也就是JavaScript对象标记&#xff0c;它通过对象和数组的组合来表示数据。1、对象和数组对象&#xff1a;在JavaScript中是使用花括号{}包裹起来的内容&#xff0c;数据结构为{key&#xff1a;value&#xff0c;ke…

VMWARE HOST-ONLY方式共享上网

在HOST-ONLY网络模式下&#xff0c;虚拟系统的网卡连接到宿主计算机的VMware Network Adapter VMnet1网卡上。如果要让VMware的虚拟机可以访问外网&#xff0c;则主系统必须共享网络连接。 具体操作步骤如下&#xff1a; 1. 通过网络连接&#xff0c;打开拨号连接的属性&#x…

tensorflow基于csv数据集实现多元线性回归并预测

#coding:utf8 import tensorflow as tf from sklearn import linear_model from sklearn import preprocessing import numpy as npdef read_data(file_queue):the function is to get features and label (即样本特征和样本的标签&#xff09;数据来源是csv的文件&#xff0c;…

ab测试nginx Nginx性能优化

转自&#xff1a;https://www.cnblogs.com/nulige/p/9369700.html 1.性能优化概述 在做性能优化前, 我们需要对如下进行考虑 1.当前系统结构瓶颈 观察指标压力测试2.了解业务模式 接口业务类型系统层次化结构3.性能与安全 性能好安全弱安全好性能低2.压力测试工具 1.安装压力测…

jedis使用_网易架构师心得:Springboot下使用redis踩过的坑

点击?蓝色“ 深入原理”&#xff0c;关注并“设为星标”技术干货&#xff0c;第一时间推送首先总结了redis服务端单线程工作模型&#xff0c;redis四种部署方式及使用场景&#xff0c;然后从源码的角度上&#xff0c;分析springboot在jedis和lettuce客户端下使用redis的一些坑…

【URAL】1091 Tmutarakan Exams

题意&#xff1a;取k个不同的数&#xff0c;每个数不超过s&#xff0c;问种数。 若kx1,kx2,...,kx3满足条件&#xff0c;则x1,x2,...,x3必然满足条件。 因此枚举素数容斥&#xff0c;2*3*5*7>50&#xff0c;所以枚举之多三层。 1 #include<cstdio>2 #include<cstri…

怎样将无线路由做成无线AP

什么是无线AP&#xff1f; 无线AP&#xff0c;即Access Point&#xff0c;也就是无线接入点。简单来说就是无线网络中的无线交换机&#xff0c;它是移动终端用户进入有线网络的接入点&#xff0c;主要用于家庭宽带、企业内部网络部署等&#xff0c;无线覆盖距离为几十米至上…

Java实现网页截屏功能(基于phantomJs)

公司最近有个需求&#xff1a;把用户第一次的测量身体信息和最近一次测量信息进行对比&#xff0c;并且需要把对比的数据截成图片可以发给用户&#xff08;需要在不打开网页的情况下实时对网页进行截图然后保存到服务器上&#xff0c;返回图片地址&#xff09;&#xff0c;通过…

CPU性能指标

1&#xff0c;主频 主频 时钟频率&#xff0c;它是指CPU内部晶振的频率&#xff0c;常用单位为MHz&#xff0c;它反映了CPU的基本工作节拍; 时钟频率又称主频&#xff0c;它是指CPU内部晶振的频率&#xff0c;常用单位为MHz&#xff0c;它反映了CPU的基本工作节拍; 2&#xff…

canvas 文字颜色_Canvas技术概述

Canvas简介在学习一项新技术之前&#xff0c;先了解这项技术的历史发展及成因会帮助我们更深刻的理解这项技术。历史上&#xff0c;canvas最早是由Apple Inc. 提出的&#xff0c;在Mac OS X webkit中创建控制板组件使用&#xff0c;而在canvas称为HTML草案及标准之前&#xff0…

sql server 2008学习10 存储过程

输入输出参数: 给存储过程传参数,叫做输入参数,用户告诉存储过程需要 利用这个参数干些什么. 输出参数: 从存储过程得到那些数据. 创建一个可选参数的存储过程: create proc pa1 name varchar(50)NULL as if(name is not null)select * from a where name like name%; elsesele…

C#_关于静态类和静态方法(转)

静态类是不能实例化的&#xff0c;即不能new 我们直接使用它的属性与方法&#xff0c;静态类最大的特点就是共享。 静态类中的所有成员必须是静态的。 静态类可以有静态构造函数&#xff0c;静态构造函数不可继承。 静态构造函数可以用于静态类&#xff0c;也可用于非静态类。 …

Struts2和SpringMVC简单配置以及区别总结

Struts2: struts 2 是一个基于MVC(mode-view-con)设计模式的Web应用框架&#xff0c;是由Struts1和WebWork两个经典框架发展而来的。 工作流程&#xff1a; 1客户端浏览器发出HTTP请求 2根据web.xml配置&#xff0c;该请求被FilterDispatcher(过滤器调度员)接收 3根据struts.xm…

python数字类型及运算_Python基础之(基本数据类型及运算)

一、运算 1.1、算数运算1.2、比较运算&#xff1a;1.3、赋值运算&#xff1a;1.4、逻辑运算&#xff1a;1.5、成员运算&#xff1a;针对逻辑运算的进一步研究&#xff1a; 1、在没有()的情况下not 优先级高于 and&#xff0c;and优先级高于or&#xff0c;即优先级关系为( )>…

AJAX跨域访问解决方案

Case I. Web代理的方式 (on Server A) 即用户访问A网站时所产生的对B网站的跨域访问请求均提交到A网站的指定页面&#xff0c;由该页面代替用户页面完成交互&#xff0c;从而返回合适的结果。此方案可以解决现阶段所能够想到的多数跨域访问问题&#xff0c;但要求A网站提供Web…

什么是生成器?

在python中&#xff0c; 要产生一个列表&#xff0c;可以这样写&#xff1a; a[] for i in range(10): a.append(i*2) 但是&#xff0c;这样挺麻烦的&#xff0c;产生一个列表&#xff0c;需要三行语句。所以&#xff0c;有人就想到能不能一行代码来表示呢&#xff1f;其实&a…

一项横断面人群研究中比较放射学阴性的中轴脊柱关节炎患者与强制性脊柱炎患者之间的差别...

原文 译文 Patients with Non-Radiographic Axial Spondyloarthritis Differ From Patients with Ankylosing Spondylitis in Several aspects– Results of a Cross-Sectional Cohort Study Uta Kiltz 1, Xenofon Baraliakos2, Pantelis Karakostas2, Manfred Igelmann…

day12-事务

day12总结[c1] 今日内容 l 事务 l 连接池 事务 事务概述 为了方便演示事务&#xff0c;我们需要创建一个account表&#xff1a; CREATE TABLE account( id INT PRIMARY KEY AUTO_INCREMENT, NAME VARCHAR(30), balance NUMERIC(10.2) ); INSERT INTO…

ThinkPHP基础概念

OOP 面向对象编程&#xff08;Object Oriented Programming&#xff0c;OOP&#xff0c;面向对象程序设计&#xff09;是一种计算机编程架构。OOP 的一条基本原则是计算机程序是由单个能够起到子程序作用的单元或对象组合而成。OOP 达到了软件工程的三个主要目标&#xff1a;重…

008本周总结报告

这周主要做了下PTA的编程题目的练习和学习和了解了java的多线程&#xff0c;了解了进程和线程的定义&#xff0c;区别&#xff0c;联系等&#xff0c;并知道了多线程的利与弊&#xff0c;并了解了JVM下的多运行机制&#xff08;本质是CPU 对应用程序的快速换&#xff09;&#…

python3.8.5是python3吗_Python 升级到3.8.5

mac osx 安装最新版本的3.8.5 将/usr/local/bin目录下的python3.8和pip3.8复制一份并修改为python和pip。 修改python的路径&#xff0c;之后source文件。 输出requirements.txt到桌面 安装新版本的第三方库&#xff0c;我使用的第三方库很多&#xff0c;更新很慢。头大啊。 验…

不看后悔 如何删除WIN7的100M隐藏分区

http://notebook.it168.com/a2010/1101/1120/000001120453_2.shtml

tomcat下面web应用发布路径配置 ( 即虚拟目录配置 )

https://blog.csdn.net/AnQ17/article/details/52122236转载于:https://www.cnblogs.com/gangpao/p/9223504.html

strcpy +memcpy实现循环右移

#include<stdio.h>#include<assert.h>#include<string.h>char *strcpy(char*strDest,const char*strSrc){assert(strDest!NULL&&strSrc!NULL);char * addr strDest;while( *strSrc!\0)*strDest *strSrc;*strDest \0;return addr;}//循环移动steps…

python查看目录下的文件_Python——查看目录下所有的目录和文件

原博文 2019-05-06 19:31 − 写程序我们经常会遇到需要遍历某一个目录下的所有文件这个操作&#xff0c;然而python有现成的库&#xff0c;只需要2个循环就可以搞定。 1 import os 2 3 def all_path(dirname): 4 5 result []#所有的文件 6 7 for ma... 相关推荐 2019-12-10 14…

负载均衡策略深入剖析

在实际应用中&#xff0c;我们可能不想仅仅是把客户端的服务请求平均地分配给内部服务器&#xff0c;而不管服务器是否宕机。而是想使Pentium III服务器比Pentium II能接受更多的服务请求&#xff0c;一台处理服务请求较少的服务器能分配到更多的服务请求&#xff0c;出现故障的…

js 验证数据类型的4中方法

1.typeof 可以检验基本数据类型 但是引用数据类型&#xff08;复杂数据类型&#xff09;无用&#xff1b; 总结 &#xff1a; typeof 无法识别引用数据类型 包括 bull; 2.instanceof是一个二元运算符&#xff0c;左操作数是一个对象&#xff0c;右操作数是一个构造函数。如…

有关 ecshop 属性 {$goods.goods_attr|nl2br} 标签的赋值问题

1、nl2br() 函数在字符串中的每个新行 (\n) 之前插入 HTML 换行符 (<br />)。 2、 如果要向{$goods.goods_attr|nl2br}赋新值&#xff0c;这个值是保存在数据库中的&#xff0c;用户在商品页(goods.php)选择了商品属性(goods.attr)之后&#xff0c;点击"购买"就…

linux cp 强制覆盖_Linux基本操作教程

Linux基本操作教程点击蓝字关注我们01.Linux系统简介Linux&#xff0c;全称GNU/Linux&#xff0c;是一套免费使用和自由传播的类UNIX操作系统&#xff0c;其内核由林纳斯本纳第克特托瓦兹于1991年第一次释出&#xff0c;它主要受到Minix和Unix思想的启发&#xff0c;是一个基于…

火焰图(Flame Graphs)的安装和基本用法

火焰图&#xff08;Flame Graphs&#xff09; 一、概述&#xff1a; 火焰图&#xff08;flame graph&#xff09;是性能分析的利器&#xff0c;通过它可以快速定位性能瓶颈点。 perf 命令&#xff08;performance 的缩写&#xff09;是 Linux 系统原生提供的性能分析工具&#…