[WOJ2549]逻辑的连通性
题目描述:##
数学中,假如有命题 p 一定能推出命题 q,则称 p 是 q 的充分条件,q 是 p 的必要 条件。
特别的,当 p 既是 q 的充分条件,又是 q 的必要条件时,称 p 和 q 互为 充要条件
现在有 n 个命题,其中一些是另一些的充分条件。请问有多少对命题互为 充要条件?
输入####
第一行两个正整数 n,m分别表示命题数和已知关系数
接下来 m 行,每行两个正整数 p 和 q,表示命题 p 是命题 q 的充分条件
输出####
仅一行,一个整数,表示充要条件的对数
考试T2,tarjan手癌了……(u和v什么的果然容易打错)然后没开longlong,GG了
题目分析:##
图论,tarjan
每给一组p q则从p往q连一条有向边
tarjan缩点之后每个连通分量里面的任意两个点都互为充要条件,所以tarjan里每找到一个连通分量的时候记一下这个连通分量的大小(弹栈的时候id[cnt]++),最后对于每个连通分量的大小\(k\)求一个\(C^2_k\)相加即可
代码:##
#include<bits/stdc++.h>
#define M (600000+5)
#define N (50000+5)
using namespace std;
inline int read(){
	int cnt=0,f=1;char c;
	c=getchar();
	while(!isdigit(c)){
		if(c=='-')f=-f;
		c=getchar();
	}
	while(isdigit(c)){
		cnt=cnt*10+c-'0';
		c=getchar();
	}
	return cnt*f;
}
long long n,m,ans=0;
long long nxt[M],first[N],to[M],low[N],dfn[N],sign=0,sta[N],top=0,tot;
long long cnt,id[N];
bool insta[N];
void add(int x,int y){
	nxt[++tot]=first[x];
	first[x]=tot;
	to[tot]=y;
}
void Dfs(int u){
	low[u]=dfn[u]=++sign;
	sta[++top]=u;insta[u]=1;
	for(register int i=first[u];i;i=nxt[i]){
		int v=to[i];
		if(!dfn[v]){
			Dfs(v);low[u]=min(low[v],low[u]);
		}
		else if(insta[v]&&dfn[v]<low[u])low[u]=dfn[v];
	}
	if(low[u]==dfn[u]) {
		cnt++;
		do{
			id[cnt]++;insta[sta[top]]=0;
		}while(sta[top--]!=u);
	}
}
long long ask(long long x) { return ((x-1)*x)/2; }
int main(){
//	freopen("logic.in","r",stdin);
//	freopen("logic.out","w",stdout);
	n=read();m=read();
	for(register int i=1;i<=m;i++){
		int x=read();int y=read();
		add(x,y);
	}
	for(register int i=1;i<=n;i++){
		if(!dfn[i])Dfs(i);
	}
	for(register int i=1;i<=cnt;i++)
		ans+=ask(id[i]);
	printf("%d",ans);
	return 0;
}
												
											[WOJ2549]逻辑的连通性的更多相关文章
- 连通性问题--Algorithms IN C读书笔记
		
近期在看<Algorithms IN C>这本书.刚開始看,读的是英文版的.感觉作者的叙述有点不太easy理解.就找了一本中文版的来看,发现还是看英文版的比較好.先看了第一章的大部分,后面 ...
 - 七、环回接口ip地址(逻辑接口)
		
loopback接口,在网络设备(一般是路由器)上是一种特殊的接口,它不是物理接口,而是一种看不见摸不着的逻辑接口(也称虚拟接口),但是对于网络设备来说却是至关重要的. 在网络设备上可以通过配置命令来 ...
 - OVS local network 连通性分析 - 每天5分钟玩转 OpenStack(132)
		
前面已经创建了两个 OVS local network,今天详细分析它们之间的连通性. launch 新的 instance "cirros-vm3",网络选择 second_lo ...
 - 计算机程序的思维逻辑 (60) - 随机读写文件及其应用 - 实现一个简单的KV数据库
		
57节介绍了字节流, 58节介绍了字符流,它们都是以流的方式读写文件,流的方式有几个限制: 要么读,要么写,不能同时读和写 不能随机读写,只能从头读到尾,且不能重复读,虽然通过缓冲可以实现部分重读,但 ...
 - 计算机程序的思维逻辑 (54) - 剖析Collections - 设计模式
		
上节我们提到,类Collections中大概有两类功能,第一类是对容器接口对象进行操作,第二类是返回一个容器接口对象,上节我们介绍了第一类,本节我们介绍第二类. 第二类方法大概可以分为两组: 接受其他 ...
 - 你真的会玩SQL吗?之逻辑查询处理阶段
		
你真的会玩SQL吗?系列目录 你真的会玩SQL吗?之逻辑查询处理阶段 你真的会玩SQL吗?和平大使 内连接.外连接 你真的会玩SQL吗?三范式.数据完整性 你真的会玩SQL吗?查询指定节点及其所有父节 ...
 - ASP.NET Core 中文文档 第四章 MVC(4.5)测试控制器逻辑
		
原文: Testing Controller Logic 作者: Steve Smith 翻译: 姚阿勇(Dr.Yao) 校对: 高嵩(Jack) ASP.NET MVC 应用程序的控制器应当小巧并专 ...
 - Linux LVM逻辑卷配置过程详解
		
许多Linux使用者安装操作系统时都会遇到这样的困境:如何精确评估和分配各个硬盘分区的容量,如果当初评估不准确,一旦系统分区不够用时可能不得不备份.删除相关数据,甚至被迫重新规划分区并重装操作系统,以 ...
 - 2000条你应知的WPF小姿势 基础篇<40-44 启动关闭,Xaml,逻辑树>
		
在正文开始之前需要介绍一个人:Sean Sexton. 来自明尼苏达双城的软件工程师.最为出色的是他维护了两个博客:2,000Things You Should Know About C# 和 2,0 ...
 
随机推荐
- snip_进制转换代码段
			
10进制转成16进制. /* 程序:10进制转16进制的C语言实现 描述: 关键: 获得余 获得整 整为零 则退出 */ #include<stdio.h> #define N 10 #d ...
 - C++游戏系列2:角色装备武器
			
很多其它见:C++游戏系列文件夹 知识点:类的组合,A类的数据成员.是B类的对象,或B类的对象.做A类的数据成员 [项目-带武器的游戏角色] 设计一个武器类,其数据成员至少要有武器名.威力,还能够加上 ...
 - android控件之间事件传递
			
public boolean dispatchTouchEvent(MotionEvent ev){} 用于事件的分发.Android中全部的事件都必须经过这种方法的分发.然后决定是自身消费当前事件还 ...
 - XJTUOJ wmq的A×B Problem FFT/NTT
			
wmq的A×B Problem 发布时间: 2017年4月9日 17:06 最后更新: 2017年4月9日 17:07 时间限制: 3000ms 内存限制: 512M 描述 这是一个非常简 ...
 - 小程序 swiper banner  图片   居中
			
var imgUrlApp = getApp().globalData.imgUrlApp; Page({ /** * 页面的初始数据 */ data: { indicatorDots: true, ...
 - React通用后台管理系统
			
react-admin 部分采用了antd,相关功能较全,添加了较多的组件模块.star 664 GitHub:https://github.com/yezihaohao/react-admin 在线 ...
 - 初探linux子系统集之led子系统(一)【转】
			
本文转载自:http://blog.csdn.net/eastmoon502136/article/details/37569789 就像学编程第一个范例helloworld一样,学嵌入式,单片机.f ...
 - Spring Boot2.0之 整合Redis事务
			
Redis事物 Redis 事务可以一次执行多个命令, 并且带有以下两个重要的保证: 事务是一个单独的隔离操作:事务中的所有命令都会序列化.按顺序地执行.事务在执行的过程中,不会被其他客户端发送来的命 ...
 - ping 中的“TTL"是什么意思
			
简单来说就是表示一个数据包在网络中可以跳跃的结点数据,当该数据为零时本数据包将被抛弃 详细解释看以下引用: TTL (although named as "time" to liv ...
 - magento导入数据的方法
			
导入演示数据 分两种情况处理. 如果你是用composer方式安装的 非常简单,二行命令搞定:在项目根目录下执行.我们的是在/var/www/magento2/下面. 安装演示数据 php bin/m ...