题目:http://codeforces.com/contest/732/problem/F

给无向图定向使得从每个点出发能去的点数最小值最大。

SCC。点内部dfs定向、点间以siz最大的为起点反向dfs。

自我感觉良好的自己写法:在新连边的时候只是操作一下 thd 和 tnxt 即可。

注意写了构造函数的话结构体成员的初值就不是自动赋值为0了。

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
const int N=4e5+;
int n,m,cnt,col[N],hd[N],xnt=,thd[N],txnt,siz[N];
int sta[N],top,low[N],dfn[N],tim;
bool vis[N],ins[N];
struct Ed{
int tnxt,nxt,fr,to;bool use;
Ed(int n=,int f=,int t=):nxt(n),fr(f),to(t) {use=;}//!!!use=0!!!
}ed[N<<];
void add(int x,int y)
{
ed[++xnt]=Ed(hd[x],x,y);hd[x]=xnt;
ed[++xnt]=Ed(hd[y],y,x);hd[y]=xnt;
}
void tarjan(int cr,int fa)
{
dfn[cr]=low[cr]=++tim;
sta[++top]=cr;ins[cr]=;
for(int i=hd[cr],v;i;i=ed[i].nxt)
if(ins[v=ed[i].to]&&v!=fa)low[cr]=min(low[cr],dfn[v]);
else if(!dfn[v])tarjan(v,cr),low[cr]=min(low[cr],low[v]);
if(dfn[cr]==low[cr])
{
cnt++;
while(sta[top]!=cr)col[sta[top]]=cnt,ins[sta[top--]]=,siz[cnt]++;
top--;col[cr]=cnt;ins[cr]=;siz[cnt]++;
}
}
void dfsx(int cr,int fa)
{
for(int i=thd[cr];i;i=ed[i].tnxt)
{
if(col[ed[i].to]!=fa)
ed[i^].use=,dfsx(col[ed[i].to],cr);
}
}
void dfs(int cr,int fa)
{
vis[cr]=;
for(int i=hd[cr],v;i;i=ed[i].nxt)
{
if(col[v=ed[i].to]!=col[cr]||v==fa)continue;
if(!ed[i^].use)ed[i].use=;//!
if(!vis[v])dfs(v,cr);//!vis[v]!!
}
}
int main()
{
scanf("%d%d",&n,&m);int x,y;
for(int i=;i<=m;i++)
{
scanf("%d%d",&x,&y);add(x,y);
}
tarjan(,);
for(int i=,u,v;i<=xnt;i++)
if((u=col[ed[i].fr])!=(v=col[ed[i].to]))
ed[i].tnxt=thd[u],thd[u]=i;
int mx=,k;
for(int i=;i<=cnt;i++)if(siz[i]>mx)mx=siz[i],k=i;
printf("%d\n",mx);dfsx(k,);
for(int i=;i<=n;i++)if(!vis[i])dfs(i,);
for(int i=;i<=xnt;i+=)
if(ed[i].use)printf("%d %d\n",ed[i].fr,ed[i].to);
else printf("%d %d\n",ed[i].to,ed[i].fr);
return ;
}

CF 732F Tourist Reform——v-SCC+dfs的更多相关文章

  1. 732F Tourist Reform

    // CF 732F Tourist Reform // 思路:两遍tarjan // 找强联通分量 #include <bits/stdc++.h> using namespace st ...

  2. Codeforces 732F. Tourist Reform (Tarjan缩点)

    题目链接:http://codeforces.com/problemset/problem/732/F 题意: 给出一个有n个点m条边的无向图,保证联通,现在要求将所有边给定一个方向使其变成有向图,设 ...

  3. CodeForces 732F Tourist Reform

    边双连通分量. 这题有一点构造的味道.一个有向图,经过强连通缩点之后会形成一个有向无环图. 如果将最大的强连通分量放在顶端,其余的强连通分量都直接或间接指向他,那么这样就构造出了符合要求的图. 接下来 ...

  4. CF Gym 100187J Deck Shuffling (dfs判连通)

    题意:给你一堆牌,和一些洗牌机,可以改变牌的顺序,问你能不能通过洗牌机把数字为x的牌洗到第一个位置. 题解:反向建边,dfs判断连通性 #include<cstdio> #include& ...

  5. CF732F Tourist Reform(边双联通)

    题意 在一张有向图中,设 ri 为从点 i 出发能够到达的点的数量. 定义有向图的“改良值”为 ri 的最小值. 现给出一张无向图,要求给每条边定一个方向,使产生的有向图“改良值”最大. 输出 最大改 ...

  6. 【codeforces 732F】Tourist Reform

    [题目链接]:http://codeforces.com/contest/732/problem/F [题意] 给你一张无向图; n个点,m条边; 让你把这张图改成有向边 然后定义r[i]为每个点能够 ...

  7. CF732F Tourist Reform[边双缩点]

    题意:给无向图每一条边定向,使得每个点可达点数$R_i$最小值尽可能大,求方案. 条件反射想到二分答案,然后看怎么检验,发现要让所有点$R_i$大于等于某一个值,首先我们关注某些特殊的子图:如果有环的 ...

  8. CF 369C . Valera and Elections tree dfs 好题

    C. Valera and Elections   The city Valera lives in is going to hold elections to the city Parliament ...

  9. Codeforces Round #377 (Div. 2) F - Tourist Reform

    前言:关于如何求双连通分量,我们可以在tarjan搜索时标记下所有桥的位置(双连通分量(可以认为是没有桥的无向图图)即可通过删去所有桥得到),那么怎么找桥呢,对于每一条搜索到的边u->x,如果l ...

随机推荐

  1. PMON使用手册

    转:http://www.docin.com/p-1949877603.html

  2. 80211n标准建链速率计算

    转:https://wenku.baidu.com/view/93f99dd3ad51f01dc281f1af.html 转:http://www.docin.com/p-1851128644.htm ...

  3. Python编程-多态、封装、特性

    一.多态与多态性 1.多态 (1)什么是多态 多态指的是一类事物有多种形态,(一个抽象类有多个子类,因而多态的概念依赖于继承) 序列类型有多种形态:字符串,列表,元组. 动物有多种形态:人,狗,猪 文 ...

  4. P4501 [ZJOI2018]胖

    题目 P4501 [ZJOI2018]胖 官方口中的送分题 做法 我们通过手玩(脑补),\(a_i\)所作的贡献(能更新的点)为:在\(a_i\)更新\(\forall x\)更新前前没有其他点能把\ ...

  5. DB2日期及时间的使用

    1.DB2中日期.时间寄存器的使用 --取日期 SELECT CURRENT DATE FROM sysibm.sysdummy1; --返回数据类型:DATE --结果集(YYYY-MM-DD): ...

  6. sg函数的应用

    刚刚接触到sg函数突然感觉到原来可以这么好用,sg函数应该算是博弈论中比较经典的东西了.下面来说说sg函数: 从网上搜集资料终于能看懂了下面解释来自http://www.cnblogs.com/cj6 ...

  7. 开机启动顺序rc.local与chkconfig的不同

    /etc/rc.local文件有如下两行/etc/init.d/mysql start/etc/init.d/keepalived start /etc/rc.local是按脚本的顺序一个启动后启动下 ...

  8. mvn库

    http://maven.aliyun.com/nexus/content/groups/public/ http://mvnrepository.com/http://search.maven.or ...

  9. HDU3047 Zjnu Stadium

    本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作. 本文作者:ljh2000 作者博客:http://www.cnblogs.com/ljh2000-jump/ ...

  10. tyvj 1057 金明的预算方案 背包dp

    P1057 金明的预算方案 时间: 1000ms / 空间: 131072KiB / Java类名: Main 背景 NOIP2006 提高组 第二道 描述 金明今天很开心,家里购置的新房就要领钥匙了 ...