cf949C 建模,SCC缩点
- /*
- 给定n个数据中心,m份资料,每份资料在其中的两个中心备份,一天可供下载的时间是h小时
- 中心i在第hi小时需要维护,无法下载
- 现在要将一些中心的维护时间往后推1小时,使得任意时刻每份资料都可以被下载,请问最少选择多少个数据中心,
- 某个中心维护时,在其中资料无法下载,必须到其他点下载,
- 如果该点对应的点也在维护,那么这个对应点的维护必须往后推
- 对应点往后推时继续和其余点矛盾,那么其余点也要往后
- 所以,如果同一份数据的两个点相隔一小时,那么这两个点要么不推迟,要推迟就要一起推迟,
- 建立模型:点x和点y有相同的资料,并且hx+1==hy,那么加有向边(x,y)
- 最后得到的图中,一个强连通分量内的所有点必须一起选择
- 缩点构成DAG,选择出度为0的点即可
- */
- #include<bits/stdc++.h>
- using namespace std;
- #define maxn 100005
- struct Edge{int to,nxt;}edge[maxn<<];
- int n,m,t,h[maxn],head[maxn],tot,d[maxn][];
- int c[maxn],low[maxn],dfn[maxn],stk[maxn],ins[maxn],ind,top;
- int cnt;
- vector<int>scc[maxn];
- void tarjan(int x){
- dfn[x]=low[x]=++ind;
- stk[++top]=x;ins[x]=;
- for(int i=head[x];i!=-;i=edge[i].nxt){
- int y=edge[i].to;
- if(!dfn[y]){//树枝边
- tarjan(y);
- low[x]=min(low[x],low[y]);
- }
- else if(ins[y])//后向边
- low[x]=min(low[x],dfn[y]);
- }
- if(dfn[x]==low[x]){
- cnt++;
- int y;
- do{
- y=stk[top--];
- ins[y]=;
- c[y]=cnt;scc[cnt].push_back(y);
- }while(x!=y);
- }
- }
- void init(){
- tot=;
- memset(head,-,sizeof head);
- }
- void addedge(int u,int v){
- edge[tot].nxt=head[u];
- edge[tot].to=v;
- head[u]=tot++;
- }
- int in[maxn],out[maxn];
- int main(){
- init();
- cin>>n>>m>>t;
- for(int i=;i<=n;i++)scanf("%d",&h[i]);
- for(int i=;i<=m;i++)scanf("%d%d",&d[i][],&d[i][]);
- for(int i=;i<=m;i++){//建图
- if((h[d[i][]]+)%t==h[d[i][]])
- addedge(d[i][],d[i][]);
- if((h[d[i][]]+)%t==h[d[i][]])
- addedge(d[i][],d[i][]);
- }
- for(int i=;i<=n;i++)
- if(!dfn[i])
- tarjan(i);
- for(int x=;x<=n;x++)
- for(int i=head[x];i!=-;i=edge[i].nxt){
- int y=edge[i].to;
- if(c[x]==c[y])continue;
- in[c[y]]++;out[c[x]]++;
- }
- int ans=0x3f3f3f3f,k;
- for(int i=;i<=cnt;i++)
- if(out[i]== && scc[i].size()<ans)
- k=i,ans=scc[i].size();
- cout<<ans<<endl;
- for(int i=;i<scc[k].size();i++)
- printf("%d ",scc[k][i]);
- }
cf949C 建模,SCC缩点的更多相关文章
- BZOJ 2707: [SDOI2012]走迷宫 [高斯消元 scc缩点]
2707: [SDOI2012]走迷宫 题意:求s走到t期望步数,\(n \le 10^4\),保证\(|SCC| \le 100\) 求scc缩点,每个scc高斯消元,scc之间直接DP 注意每次清 ...
- bzoj1093: [ZJOI2007]最大半连通子图 scc缩点+dag上dp
一个有向图G=(V,E)称为半连通的(Semi-Connected),如果满足:?u,v∈V,满足u→v或v→u,即对于图中任意两点u,v,存在一条u到v的有向路径或者从v到u的有向路径.若G'=(V ...
- HDU 3072--Intelligence System【SCC缩点新构图 && 求连通全部SCC的最小费用】
Intelligence System Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Othe ...
- UVA11324 The Lagest Lique(SCC缩点+DP)
Given a directed graph G, con- sider the following transformation. First, create a new graph T(G) to ...
- POJ 2186 Popular cows(SCC 缩点)
Every cow's dream is to become the most popular cow in the herd. In a herd of N (1 <= N <= 10, ...
- P2746 P2812 [USACO5.3]校园网Network of Schools[SCC缩点]
题目描述 一些学校连入一个电脑网络.那些学校已订立了协议:每个学校都会给其它的一些学校分发软件(称作"接受学校").注意即使 B 在 A 学校的分发列表中, A 也不一定在 B 学 ...
- 洛谷P2341 [HAOI2006]受欢迎的牛 (Tarjan,SCC缩点)
P2341 [HAOI2006]受欢迎的牛|[模板]强连通分量 https://www.luogu.org/problem/P2341 题目描述 每头奶牛都梦想成为牛棚里的明星.被所有奶牛喜欢的奶牛就 ...
- bzoj 1179 [Apio2009]Atm——SCC缩点+spfa
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1179 显然SCC缩点. 然后准备倒着拓扑序推到st,结果WA. 听TJ说dj求最长路会发生不 ...
- 洛谷 P6030 - [SDOI2012]走迷宫(高斯消元+SCC 缩点)
题面传送门 之所以写个题解是因为题解区大部分题解的做法都有 bug(u1s1 周六上午在讨论区里连发两个 hack 的是我,由于我被禁言才让 ycx 代发的) 首先碰到这种期望题,我们套路地设 \(d ...
随机推荐
- valgrind 开发板调试
1.http://www.360doc.com/content/13/1205/13/7256015_334661588.shtml
- 【blog】SpringBoot普通类中如何获取其他bean例如Service、Dao
自己写工具类 工具类 import org.springframework.beans.BeansException; import org.springframework.context.Appli ...
- pythonの递归锁
首先看一个例子,让我们lock = threading.Lock() 时(代码第33行),程序会卡死在这里 #!/usr/bin/env python import threading,time de ...
- python第二天,list和tuple
概念:list是集合,且是可变集合,tuple是元组集合,不可变集合. 1.Python内置的一种数据类型是列表:list.list是一种有序的集合,可以随时添加和删除其中的元素. 主要知识点:初始化 ...
- JAVA并行异步编程,线程池+FutureTask
java 在JDK1.5中引入一个新的并发包java.util.concurrent 该包专门为java处理并发而书写. 在java中熟悉的使用多线程的方式为两种?继续Thread类,实现Runnal ...
- LwIP Application Developers Manual11---Initializing lwIP
1.前言 2.Initialization for simple lwIP 查看doc/rawapi.txt来获得更多官方信息 #if NO_SYS /* Network interface vari ...
- LwIP Application Developers Manual4---传输层之UDP、TCP
1.前言 本文主要讲解传输层协议UDP TCP 2.UDP 2.1 UDP from an application perspective 2.2 UDP support history in lwI ...
- Node.js WEB服务器(1)——编写简单的HTTP服务器
基于分而治之的思想,很多架构都会采用分层的模式来处理某类应用.Node.js在Web开发上也是采用这种模式,分别提供了如下的三个层: Node核心 社区模块 应用逻辑 下面是一个最简形式的web服务器 ...
- python模块之sniffio
嗅探python用了哪个异步库 from sniffio import current_async_library import trio import asyncio async def print ...
- 设计模式C++学习笔记之二十(完结篇 & 面向对象原则)设计模式C++实例下载
Prototype(原型模式) 20.1.解释 概念:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象. main(),客户 ICloneableNow,只有一个接口Clone CM ...