제출 #1352438

#제출 시각아이디문제언어결과실행 시간메모리
1352438AvianshCircuit 2 (JOI25_circuit2)C++20
10 / 100
33 ms17044 KiB
#include <bits/stdc++.h>
#include "circuit.h"

using namespace std;
///get order
void dfs(int st, vector<int>g[], string &ans, string quer){
    if(g[st].size()==0){
        return;
    }
    quer[g[st][0]]='1';
    if(query(quer)){
        ///this is an or gate
        ans[st]='|';
        quer[g[st][0]]='0';
        dfs(g[st][0],g,ans,quer);
        dfs(g[st][1],g,ans,quer);
    }
    else{
        quer[g[st][0]]='1';
        dfs(g[st][1],g,ans,quer);
        quer[g[st][0]]='0';
        quer[g[st][1]]='1';
        dfs(g[st][0],g,ans,quer);
        quer[g[st][1]]='0';
    }
}

string solve(int n, int r, vector<int> u, vector<int> v) {
    vector<int>g[2*n+1];
    bool pleft[2*n+1];
    fill(pleft,pleft+2*n+1,0);
    int p[2*n+1];
    fill(p,p+2*n+1,-1);
    for(int i = 0;i<n;i++){
        g[i].push_back(u[i]);
        g[i].push_back(v[i]);
        pleft[v[i]]=1;
        p[v[i]]=i;
        p[u[i]]=i;
    }
    string ans = "";
    string quer = "";
    for(int i = 0;i<n;i++){
        ans+="&";
    }
    for(int i = 0;i<2*n+1;i++){
        quer+="0";
    }
    dfs(0,g,ans,quer);
    return ans;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...