CEOI2017 day1-oneway【DFS序】
来源:互联网 发布:ketchup mac免费 编辑:程序博客网 时间:2024/06/06 12:33
环上的边都是B,路径直接在DFS树上打标机就可以了。
代码
#include<cstdio>#include<cstring>#include<algorithm>#define maxn 100006using namespace std;inline char nc(){ static char buf[100000],*i=buf,*j=buf; return i==j&&(j=(i=buf)+fread(buf,1,100000,stdin),i==j)?EOF:*i++;}inline int _read(){ char ch=nc();int sum=0; while(!(ch>='0'&&ch<='9'))ch=nc(); while(ch>='0'&&ch<='9')sum=sum*10+ch-48,ch=nc(); return sum;}struct data{ int x,y;}s[maxn];int n,e,m,tot,dep[maxn],f1[maxn],f2[maxn],lnk[maxn],son[maxn*2],nxt[maxn*2],id[maxn*2];bool vis[maxn],vis1[maxn*2],a[maxn],b[maxn];char ans[maxn];void add(int x,int y,int z){ nxt[++tot]=lnk[x];son[tot]=y;lnk[x]=tot;id[tot]=z;}void dfs1(int x){ vis[x]=0; for(int j=lnk[x];j;j=nxt[j]) if(vis[son[j]])vis1[id[j]]=0,dfs1(son[j]);else if(vis1[id[j]])ans[id[j]]='B',vis1[id[j]]=0,f1[x]++,f1[son[j]]--;}void dfs2(int x){ vis[x]=0; for(int j=lnk[x];j;j=nxt[j]) if(vis[son[j]]){ dep[son[j]]=dep[x]+1; dfs2(son[j]); if(f1[son[j]]>0)ans[id[j]]='B';else if((f2[son[j]]>0&&(j&1))||(f2[son[j]]<0&&(!(j&1))))ans[id[j]]='L';else if((f2[son[j]]<0&&(j&1))||(f2[son[j]]>0&&(!(j&1))))ans[id[j]]='R'; f1[x]+=f1[son[j]];f2[x]+=f2[son[j]]; }}int main(){ freopen("oneway.in","r",stdin); freopen("oneway.out","w",stdout); n=_read();e=_read(); for(int i=1,x,y;i<=e;i++)s[i].x=_read(),s[i].y=_read(),add(s[i].x,s[i].y,i),add(s[i].y,s[i].x,i); m=_read(); for(int i=1,x,y;i<=m;i++)x=_read(),y=_read(),f2[x]++,f2[y]--; memset(vis,1,sizeof(vis));memset(vis1,1,sizeof(vis1)); for(int i=1;i<=n;i++) if(vis[i])dfs1(i); memset(vis,1,sizeof(vis)); for(int i=1;i<=n;i++) if(vis[i])dfs2(i); for(int i=1;i<=e;i++) if(ans[i]==0)printf("B");else printf("%c",ans[i]); return 0;}
阅读全文
0 0
- CEOI2017 day1-oneway【DFS序】
- CEOI2017 day1-Sure Bet【三分】
- oneway interface
- oneway,twoway
- [CEOI2017]One-Way Streets
- [二分 树形DP] CEOI2017. Mousetrap
- Day1
- day1
- day1
- day1
- day1
- day1
- day1
- Day1
- DAY1
- day1
- day1
- day1
- oracle数据类型和对应的java类型
- SystemUI VolumeService
- java成神之路
- dll静态调用-修改lib中dll名称就能改变调用dll的名称
- JAVA内存区域与内存溢出异常
- CEOI2017 day1-oneway【DFS序】
- raft协议和paxos
- Elasticsearch 集群优化总结
- Unity3D c# 使对象物体始终面向摄像机。
- js清除缓存的几种方法
- 面向对象 异常处理 系统自带、自定义、捕捉多个
- flume使用之httpSource
- 为什么你的手机会越用越卡,那是你不知道这些
- 关于物联网平台 你想知道的都在这里!