CF G. Orientation of Edges BFS
来两遍 $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的更多相关文章
- 2018年长沙理工大学第十三届程序设计竞赛 G 逃离迷宫 【BFS】
链接:https://www.nowcoder.com/acm/contest/96/G 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言65536 ...
- CF #375 (Div. 2) D. bfs
1.CF #375 (Div. 2) D. Lakes in Berland 2.总结:麻烦的bfs,但其实很水.. 3.题意:n*m的陆地与水泽,水泽在边界表示连通海洋.最后要剩k个湖,总要填掉多 ...
- 2018牛客网暑假ACM多校训练赛(第三场)G Coloring Tree 计数,bfs
原文链接https://www.cnblogs.com/zhouzhendong/p/NowCoder-2018-Summer-Round3-G.html 题目传送门 - 2018牛客多校赛第三场 G ...
- CF 520 B. Two Buttons(bfs)
/*题意:一个数,就是输入的第一个数,让它变成第二个数最少用几步.可以点红色按钮,蓝色按钮来改变数字,红色:*2,蓝色:-1,如果变成负数,就变成原来的数.CF 520 B. Two Buttons思 ...
- CF G. Indie Album AC自动机+fail树+线段树
这个套路挺有意思的. 把 $trie$ 和 $fail$ 树都建出来,然后一起跑一跑就好了~ #include <queue> #include <cstdio> #inclu ...
- cf.295.B Two Buttons (bfs)
Two Buttons time limit per test 2 seconds memory limit per test 256 megabytes input standard input ...
- CF 986A Fair——多源bfs
题目:http://codeforces.com/contest/986/problem/A 如果从每个村庄开始bfs找货物,会超时. 发现k较小.那就从货物开始bfs,给村庄赋上dis[ 该货物 ] ...
- CF#541 D. Gourmet choice /// BFS 拓扑
题目大意: 给定n m 第一行有n个数 第二行有m个数 接下来n行每行m列 有 = < > 位于 i j 的符号表示 第一行第i个数与第二行第j个数的大小关系 1.将n+m个数 当做按顺序 ...
- 2020牛客寒假算法基础集训营5 G.街机争霸 (bfs)
https://ac.nowcoder.com/acm/problem/201961 预处理出僵尸走的路径,僵尸走的周期长度应该为2k-2,在普通的bfs基础上加上一维表示时间,从当前位置x,y和和时 ...
随机推荐
- 【HANA系列】SAP HANA日期函数总结
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[HANA系列]SAP HANA日期函数总结 ...
- 【组策略】1.组策略介绍group policy
组策略介绍group policy 高效学习法,念念不忘,必有回响. 分享一个高效学习思维,潜意识思考.就是在您没有大量时间的情况下,学习十分钟. 然后离开去完成别的事情的时候,大脑潜意识中还会继续思 ...
- poj-1236.network of schools(强连通分量 + 图的入度出度)
Network of Schools Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 27121 Accepted: 10 ...
- Spark-Core RDD行动算子
1.reduce(func) 通过func函数聚集RDD 中的所有元素,先聚合分区内数据,再聚合分区间数据. scala> val rdd1 = sc.parallelize(1 to 100) ...
- 【已解决】Error running 'xxx项目' Command line is too long(idea版)
[错误] Error running 'xxx项目': Command line is too long. Shorten command line for xxx or also for Sprin ...
- git error: failed to push some refs to 'git@github.com:xxx/xxx.git'
本地仓库中和远程仓库不一致,缺少readme.md文件 解决方式参见:https://blog.csdn.net/qq_37281252/article/details/79044798
- [七月挑选]frp初使用
title: frp初使用 先starfatedier/frp,再开工. 什么是frp? frp is a fast reverse proxy to help you expose a local ...
- 内存缓存的使用Demo
使用缓存的目的是为了使用的应用程序能更快速的响应用户输入,是程序高效的运行.有时候我们需要将远程web服务器获取的数据缓存起来,减少对同一个url多次请求. 内存缓存我们可以使用sdk中的NSURLC ...
- oracle比较两个查询结果的差异
可以使用minus select * from A minus select * from B; select * from B minus select * from A;
- nohup - 使程序运行时不挂起, 不向 tty 输出信息
总览 (SYNOPSIS) nohup COMMAND [ARG]... nohup OPTION 描述 (DESCRIPTION) 执行 COMMAND 命令, 忽略 hangup (挂起) 信号. ...