Submission #1170817

#TimeUsernameProblemLanguageResultExecution timeMemory
1170817RiverFlow길고양이 (JOI20_stray)C++20
15 / 100
35 ms13896 KiB
#include <bits/stdc++.h>

//#define LOCAL

#ifndef LOCAL

#include "Anthony.h"

#endif

#define nl "\n"
#define no "NO"
#define yes "YES"
#define fi first
#define se second
#define vec vector
#define task "main"
#define _mp make_pair
#define ii pair<int, int>
#define sz(x) (int)x.size()
#define all(x) x.begin(), x.end()
#define evoid(val) return void(std::cout << val)
#define FOR(i, a, b) for(int i = (a); i <= (b); ++i)
#define FOD(i, b, a) for(int i = (b); i >= (a); --i)
#define unq(x) sort(all(x)); x.resize(unique(all(x)) - x.begin())

using namespace std;

const int N = (int)2e4 + 9;
const int mod = (int)1e9 + 7;

pair<int, int> e[N];

namespace {
int par[N];
int n, m;

vector<ii> g[N];

};


vector<int> Mark(int N, int M, int A, int B, vector<int> U, vector<int> V) {
    n = N, m = M;
    for(int i = 0; i < m; ++i) e[i] = _mp(U[i], V[i]);
    vec<int> mark(m);
    if (B == 0 and A >= 3) {
        for(int i = 0; i < m; ++i) {
            g[e[i].fi].emplace_back(e[i].se, i);
            g[e[i].se].emplace_back(e[i].fi, i);
        }
        queue<int> q;
        vec<int> h(n, -1);
        q.push(0);
        h[0] = 0;
        while (!q.empty()) {
            int u = q.front(); q.pop();
            for(ii v : g[u]) {
                if (h[v.fi] == -1) {
                    h[v.fi] = h[u] + 1;
                    par[v.fi] = u;
                    q.push(v.fi);
                }
            }
        }
        for(int i = 0; i < m; ++i) {
            if (h[ e[i].fi ] > h[ e[i].se ]) swap(e[i].fi, e[i].se);
            if (h[ e[i].fi ] == h[ e[i].se ]) {
                mark[i] = (h[e[i].fi] % 3);
                continue;
            }
            mark[i] = (h[ e[i].se ] - 1) % 3;
        }

        return mark;
    }

    return mark;
}


#ifdef LOCAL
int main() {
    freopen("main.inp", "r", stdin);
    freopen("main.out", "w", stdout);

    int n, m, a, b, s;
    cin >> n >> m >> a >> b >> s;
    vector<int> U(m), V(m);
    for(int i = 0; i < m; ++i) {
        cin >> U[i] >> V[i];
    }
    vector<int> f = Mark(n, m, a, b, U, V);
    for(int i = 0; i < m; ++i)
        cout << f[i] << ' ';
}
#endif
#include <bits/stdc++.h>

//#define LOCAL

#ifndef LOCAL
#include "Catherine.h"
#endif

#define nl "\n"
#define no "NO"
#define yes "YES"
#define fi first
#define se second
#define vec vector
#define task "main"
#define _mp make_pair
#define ii pair<int, int>
#define sz(x) (int)x.size()
#define all(x) x.begin(), x.end()
#define evoid(val) return void(std::cout << val)
#define FOR(i, a, b) for(int i = (a); i <= (b); ++i)
#define FOD(i, b, a) for(int i = (b); i >= (a); --i)
#define unq(x) sort(all(x)); x.resize(unique(all(x)) - x.begin())

using namespace std;

namespace {

const int N = (int)2e5 + 9;
const int mod = (int)1e9 + 7;

int A, B;
int variable_example = 0;

};  // namespace

void Init(int A, int B) {
  ::A = A;
  ::B = B;
}

int Move(vector<int> y) {
    int cnt = 0;
    for(int j = 0; j < A; ++j) {
        cnt += y[j] > 0;
    }
    if (cnt == 1) {
        for(int j = 0; j < A; ++j) if (y[j] > 0)
            return j;
    }
    if (y[0] and y[1]) return 0;
    if (y[1] and y[2]) return 1;
    if (y[0] and y[2]) return 2;
    // no more case
    return -1;
}


#ifdef LOCAL

int main() {
    if (fopen(task".inp", "r")) {
        freopen(task".inp", "r", stdin);
        freopen(task".out", "w", stdout);
    }

}

#endif

/*     Let the river flows naturally     */

#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...