답안 #878736

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
878736 2023-11-25T06:43:18 Z UmairAhmadMirza One-Way Streets (CEOI17_oneway) C++17
0 / 100
2 ms 5976 KB
#include <bits/stdc++.h>
using namespace std;
int const N=2e5+5;
vector<int> adj[N];
int n,m;
bool vis[N];
bool inpath[N];
int cnt[N];
map<pair<int,int>,int> mp;
void dfs1(int node,int par){
    // cout<<node<<endl;
    vis[node]=1;
    inpath[node]=1;
    bool p=1;
    for(auto i:adj[node]){
        if(vis[i]==0){
            dfs1(i,node);
            cnt[node]+=cnt[i];
            if(cnt[i]>0){
                mp[{i,node}]='B';
                mp[{node,i}]='B';
            }
        }
        else if(i==par && p==1)
            p=0;
        else if(inpath[i]){
            cnt[node]++;
            cnt[i]--;
            mp[{node,i}]='B';
            mp[{i,node}]='B';
        }
    }
    inpath[node]=0;
}
vector<int> path;
int des=0;
void dfs(int node){
    path.push_back(node);
    vis[node]=1;
    if(node==des){
        des=-1;
        int sz=path.size();
        for(int i=0;i<sz-1;i++){
            if(mp[{path[i],path[i+1]}]==' ')
                mp[{path[i],path[i+1]}]='D';
        }
    }
    for(auto i:adj[node]){
        if(vis[i]==0)
            dfs(i);
    }
    path.pop_back();
}
int main(){
    cin>>n>>m;
    vector<pair<int,int>> edge;
    for (int i = 0; i < m; ++i){
        int u,v;
        cin>>u>>v;
        edge.push_back({u,v});
        mp[{u,v}]=' ';
        mp[{v,u}]=' ';
        if(u==v)
            continue;
        adj[u].push_back(v);
        adj[v].push_back(u);
    }
    for(int i=1;i<=n;i++)
    	if(vis[i]==0)
    		dfs1(1,0);
    int k;
    cin>>k;
    for (int i = 0; i < k; ++i){
    	int a,b;
        cin>>a>>b;
        des=b;
        for(int j=0;j<=n;j++)
            vis[j]=0;
        path.clear();
        dfs(a);
    }
    for(auto ed:edge){
        int u=ed.first;
        int v=ed.second;
        if(mp[ed]=='D')
            cout<<'R';
        else if(mp[{v,u}]=='D')
            cout<<'L';
        else
            cout<<'B';
    }
    cout<<endl;
    return 0;
}
# 결과 실행 시간 메모리 Grader output
1 Incorrect 2 ms 5976 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 2 ms 5976 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 2 ms 5976 KB Output isn't correct
2 Halted 0 ms 0 KB -