/*
给定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缩点的更多相关文章

  1. BZOJ 2707: [SDOI2012]走迷宫 [高斯消元 scc缩点]

    2707: [SDOI2012]走迷宫 题意:求s走到t期望步数,\(n \le 10^4\),保证\(|SCC| \le 100\) 求scc缩点,每个scc高斯消元,scc之间直接DP 注意每次清 ...

  2. 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 ...

  3. HDU 3072--Intelligence System【SCC缩点新构图 &amp;&amp; 求连通全部SCC的最小费用】

    Intelligence System Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Othe ...

  4. UVA11324 The Lagest Lique(SCC缩点+DP)

    Given a directed graph G, con- sider the following transformation. First, create a new graph T(G) to ...

  5. 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, ...

  6. P2746 P2812 [USACO5.3]校园网Network of Schools[SCC缩点]

    题目描述 一些学校连入一个电脑网络.那些学校已订立了协议:每个学校都会给其它的一些学校分发软件(称作"接受学校").注意即使 B 在 A 学校的分发列表中, A 也不一定在 B 学 ...

  7. 洛谷P2341 [HAOI2006]受欢迎的牛 (Tarjan,SCC缩点)

    P2341 [HAOI2006]受欢迎的牛|[模板]强连通分量 https://www.luogu.org/problem/P2341 题目描述 每头奶牛都梦想成为牛棚里的明星.被所有奶牛喜欢的奶牛就 ...

  8. bzoj 1179 [Apio2009]Atm——SCC缩点+spfa

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1179 显然SCC缩点. 然后准备倒着拓扑序推到st,结果WA. 听TJ说dj求最长路会发生不 ...

  9. 洛谷 P6030 - [SDOI2012]走迷宫(高斯消元+SCC 缩点)

    题面传送门 之所以写个题解是因为题解区大部分题解的做法都有 bug(u1s1 周六上午在讨论区里连发两个 hack 的是我,由于我被禁言才让 ycx 代发的) 首先碰到这种期望题,我们套路地设 \(d ...

随机推荐

  1. cookie——创建、获取、删除

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  2. 深度学习——深度神经网络(DNN)反向传播算法

    深度神经网络(Deep Neural Networks,简称DNN)是深度学习的基础. 回顾监督学习的一般性问题.假设我们有$m$个训练样本$\{(x_1, y_1), (x_2, y_2), …, ...

  3. css3 特效拓展 画个安卓机器人

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  4. 基本类型变量、引用类型变量的在java中的存放位置

    一.局部变量存储在方法栈中 在方法中声明的变量,即该变量是局部变量,每当程序调用方法时,系统都会为该方法建立一个方法栈,其所在方法中声明的变量就放在方法栈中,当方法结束系统会释放方法栈,其对应在该方法 ...

  5. centos6.5环境安装zookeeper-3.4.5

    1.将zookeeper-3.4.5.tar.gz压缩包拷贝到/usr/local/src, 并用如下命令解压 tar -xzf  zookeeper-3.4.5.tar.gz 2.在zookeepe ...

  6. Hadoop Streaming开发要点

    一.shell脚本中的相关配置 HADOOP_CMD="/usr/local/src/hadoop-1.2.1/bin/hadoop" STREAM_JAR_PATH=" ...

  7. DAC杂谈一

    DAC种类: 有权电阻网络DAC 输出电压变化范围为:0~-(2^n-1)/2^n*Vref 当位数很高时,每个电阻都有很高精度是十分困难的. 倒T型电阻网络DAC(比如AD7520 10bit 已停 ...

  8. Memcache的安装和使用【转】

    转自:https://www.cnblogs.com/caoxiaojian/p/5715573.html Memcache是高性能,分布式的内存对象缓存系统,用于在动态应用中减少数据库负载,提升访问 ...

  9. C#基础巩固之基础类型

    注:以下笔记全摘录自CLR via C# 3 1.所有类型都从System.Object派生:”运行时“要求每个类型最终都从System.Object派生. 2.System.Object提供了四个公 ...

  10. RPC与实践(thrift在windows的编译/安装--c++版)

    ------------------------------------------------------------------------ RPC 功能目标 RPC 的主要功能目标是让构建分布式 ...