来两遍 $BFS,$ 都贪心一下即可.

#include <bits/stdc++.h>
#define maxn 300009
using namespace std;
void setIO(string s) {
string in=s+".in";
freopen(in.c_str(),"r",stdin);
}
queue<int>Q;
int n,m,s,edges,nn=0;
int hd[maxn],to[maxn<<1],nex[maxn<<1],val[maxn<<1],vis[maxn],mk[maxn<<1],idx[maxn<<1],ou[maxn<<1];
void addedge(int u,int v,int c) {
nex[++edges]=hd[u],hd[u]=edges,to[edges]=v,val[edges]=c;
}
void solve1() {
memset(vis,0,sizeof(vis));
vis[s]=1;
Q.push(s);
while(!Q.empty()) {
int u=Q.front();Q.pop();
for(int i=hd[u];i;i=nex[i]) {
int v=to[i];
if(val[i]) {
if(val[i]==1) ou[idx[i]]=0;
else ou[idx[i]]=1;
continue;
}
if(!vis[v]) {
Q.push(v);
vis[v]=1;
}
}
}
int cnt=0;
for(int i=1;i<=n;++i) if(vis[i]) ++cnt;
printf("%d\n",cnt);
for(int i=1;i<=nn;++i) if(ou[i]) printf("+"); else printf("-");
printf("\n");
}
void solve2() {
memset(vis,0,sizeof(vis));
vis[s]=1;
Q.push(s);
int cc=0;
while(!Q.empty()) {
int u=Q.front();Q.pop();
for(int i=hd[u];i;i=nex[i]) {
int v=to[i];
if(!vis[v]) {
Q.push(v);
vis[v]=1;
if(val[i])mk[i]=1;
}
}
}
int cnt=0;
for(int i=1;i<=n;++i) if(vis[i]) ++cnt;
printf("%d\n",cnt);
for(int i=1;i<=edges;++i) {
if(mk[i]==1) {
if(val[i]==1) ou[idx[i]]=1;
else ou[idx[i]]=0;
}
}
for(int i=1;i<=nn;++i) if(ou[i]) printf("+"); else printf("-");
printf("\n");
memset(ou,0,sizeof(ou));
}
int main() {
// setIO("input");
scanf("%d%d%d",&n,&m,&s);
for(int i=1;i<=m;++i) {
int t,u,v;
scanf("%d%d%d",&t,&u,&v);
if(t==1) addedge(u,v,0);
else addedge(u,v,1),idx[edges]=++nn,addedge(v,u,2),idx[edges]=nn;
}
solve2();
solve1();
return 0;
}

  

CF G. Orientation of Edges BFS的更多相关文章

  1. 2018年长沙理工大学第十三届程序设计竞赛 G 逃离迷宫 【BFS】

    链接:https://www.nowcoder.com/acm/contest/96/G 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言65536 ...

  2. CF #375 (Div. 2) D. bfs

    1.CF #375 (Div. 2)  D. Lakes in Berland 2.总结:麻烦的bfs,但其实很水.. 3.题意:n*m的陆地与水泽,水泽在边界表示连通海洋.最后要剩k个湖,总要填掉多 ...

  3. 2018牛客网暑假ACM多校训练赛(第三场)G Coloring Tree 计数,bfs

    原文链接https://www.cnblogs.com/zhouzhendong/p/NowCoder-2018-Summer-Round3-G.html 题目传送门 - 2018牛客多校赛第三场 G ...

  4. CF 520 B. Two Buttons(bfs)

    /*题意:一个数,就是输入的第一个数,让它变成第二个数最少用几步.可以点红色按钮,蓝色按钮来改变数字,红色:*2,蓝色:-1,如果变成负数,就变成原来的数.CF 520 B. Two Buttons思 ...

  5. CF G. Indie Album AC自动机+fail树+线段树

    这个套路挺有意思的. 把 $trie$ 和 $fail$ 树都建出来,然后一起跑一跑就好了~ #include <queue> #include <cstdio> #inclu ...

  6. cf.295.B Two Buttons (bfs)

     Two Buttons time limit per test 2 seconds memory limit per test 256 megabytes input standard input ...

  7. CF 986A Fair——多源bfs

    题目:http://codeforces.com/contest/986/problem/A 如果从每个村庄开始bfs找货物,会超时. 发现k较小.那就从货物开始bfs,给村庄赋上dis[ 该货物 ] ...

  8. CF#541 D. Gourmet choice /// BFS 拓扑

    题目大意: 给定n m 第一行有n个数 第二行有m个数 接下来n行每行m列 有 = < > 位于 i j 的符号表示 第一行第i个数与第二行第j个数的大小关系 1.将n+m个数 当做按顺序 ...

  9. 2020牛客寒假算法基础集训营5 G.街机争霸 (bfs)

    https://ac.nowcoder.com/acm/problem/201961 预处理出僵尸走的路径,僵尸走的周期长度应该为2k-2,在普通的bfs基础上加上一维表示时间,从当前位置x,y和和时 ...

随机推荐

  1. 远程桌面 虚拟打印 到本地打印机(虚拟化 终端 远程接入 RemoteApp)

    使用远程桌面或remoteapp进行打印时,若需使用本地的打印机,需要通过重定向方式,但本地打印机如果五花八门比较杂,那给服务器安装打印机驱动很麻烦. 其实可以借助虚拟打印机简化操作,省去给服务器安装 ...

  2. Java String == && equal

    [.net超级群:27921837] Java中equals和==的区别 java中的数据类型,可分为两类:1.基本数据类型,也称原始数据类型.byte,short,char,int,long,flo ...

  3. [转帖]Twitter 宣布抛弃 Mesos,全面转向 Kubernetes

    Twitter 宣布抛弃 Mesos,全面转向 Kubernetes http://www.itpub.net/2019/05/06/1788/ 事实标准了.   作者 | 阿里云智能高级技术专家 张 ...

  4. 56 道高频 JavaScript 与 ES6+ 的面试题及答案

    56 道高频 JavaScript 与 ES6+ 的面试题及答案 :https://segmentfault.com/a/1190000020082089?utm_source=weekly& ...

  5. VUE项目中使用this.$forceUpdate();解决页面v-for中修改item属性值后页面v-if不改变的问题

    VUE项目中使用this.$forceUpdate();解决页面v-for中修改item属性值后页面v-if不改变的问题:https://blog.csdn.net/jerrica/article/d ...

  6. C#中的委托和事件(一)——delegate

    前言 来说一说委托(delegate)和事件(event),本篇采取的形式是翻译微软Delegate的docs中的重要部分(不要问我为什么微软的docs有中文还要读英文,因为读中文感觉自己有阅读障碍- ...

  7. pistat 查看进程状态

    该pidstat命令用于监视当前正在由Linux内核管理的各个任务.对于使用选项-p选择的每个任务,或者如果使用了选项-p ALL,则它将写入Linux内核管理的 每个任务的标准输出活动.不选择任何任 ...

  8. jquery中的插件EChars的使用

    首先,进入EChars的官网下载页面:http://echarts.baidu.com/download.html    下载自己需要的版本. 引入jquery包和echars,进入官网的实例:htt ...

  9. px-em-pt等字体的不同

  10. vue 使用element-ui中的Notification自定义按钮并实现关闭功能以及如何处理多个通知

    使用element-ui中的Notification,只有一个message属性是有很大的操作空间,其余的都是写死的,无法进行扩展,达不到想要的效果.所以只能在message上下功夫. 在elemen ...