Submission #81718

# Submission time Handle Problem Language Result Execution time Memory
81718 2018-10-26T10:05:21 Z Saboon Teoretičar (COCI18_teoreticar) C++14
52 / 130
12000 ms 263168 KB
#include <iostream>
#include <sstream>
#include <queue>
#include <stack>
#include <vector>
#include <cstring>
#include <cmath>
#include <map>
#include <unordered_map>
#include <set>
#include <algorithm>
#include <iomanip>
#define F first
#define S second
#define PB push_back
#define PF push_front
#define MP make_pair
using namespace std;
typedef long long ll;
typedef long double ld;
typedef pair<int,int> pii;
const int maxn = 1e5 + 37;
const int maxm = 3e6 + 100;

int col[maxm], edge[maxn], match[maxn];
vector <pii> g[maxn];
bool visited[maxn];

bool dfs (int v) {
    if (visited[v])
        return false;
    visited[v] = 1;
    for (auto u : g[v]) {
        if (col[u.S] != 0)
            continue;
        if (match[u.F] == -1 or dfs (match[u.F])) {
            match[u.F] = v;
            edge[u.F] = u.S;
            return true;
        }
    }
    return false;
}

int d[maxn], dp[maxn];

int main() {
    ios_base::sync_with_stdio(false);
    int n, m, e;
    cin >> n >> m >> e;
    int Maxd = 0;
    for (int i = 1; i <= e; i++) {
        int v, u;
        cin >> v >> u;
        g[v].PB ({u, i});
        d[v] ++;
        dp[u] ++;
        Maxd = max (Maxd, d[v]);
        Maxd = max (Maxd, dp[u]);
    }
    n = max (n, m);
    m = max (n, m);
    int tmp = e + 1;
    for (int i = 1; i <= n; i++) {
        if (d[i] < Maxd) {
            for (int j = 1; d[i] < Maxd and j <= m; j++) {
                while (d[i] < Maxd and dp[j] < Maxd) {
                    g[i].PB ({j, tmp ++});
                    d[i] ++;
                    dp[j] ++;
                }
            }
        }
    }

    int c = 1, cop = tmp - 1;
    while (cop) {
        memset (match, -1, sizeof match);
        int tmp = 0;
        for (int i = 1; i <= n; i++) {
            memset (visited, 0, sizeof visited);
            tmp += dfs (i);
        }
        cop -= tmp;
        for (int i = 1; i <= m; i++)
            if (match[i] != -1)
                col[edge[i]] = c;
        c ++;
    }
    cout << c - 1 << endl;
    for (int i = 1; i <= e; i++)
        cout << col[i] << '\n';
}
# Verdict Execution time Memory Grader output
1 Correct 5 ms 3192 KB Output is correct
2 Correct 7 ms 3196 KB Output is correct
3 Correct 9 ms 3368 KB Output is correct
4 Correct 5 ms 3416 KB Output is correct
5 Correct 5 ms 3416 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 23 ms 3484 KB Output is correct
2 Correct 18 ms 3484 KB Output is correct
3 Correct 7 ms 3484 KB Output is correct
4 Correct 5 ms 3484 KB Output is correct
5 Correct 5 ms 3484 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 80 ms 3792 KB Output is correct
2 Correct 95 ms 3792 KB Output is correct
3 Correct 524 ms 4700 KB Output is correct
4 Correct 25 ms 4700 KB Output is correct
5 Correct 24 ms 4700 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 4457 ms 11912 KB Output is correct
2 Correct 119 ms 11912 KB Output is correct
3 Correct 516 ms 11912 KB Output is correct
4 Correct 29 ms 11912 KB Output is correct
5 Correct 21 ms 11912 KB Output is correct
# Verdict Execution time Memory Grader output
1 Execution timed out 12061 ms 11912 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Execution timed out 12092 ms 11912 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Runtime error 790 ms 263168 KB Execution killed with signal 9 (could be triggered by violating memory limits)
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Execution timed out 12018 ms 263168 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Runtime error 551 ms 263168 KB Execution killed with signal 11 (could be triggered by violating memory limits)
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Runtime error 554 ms 263168 KB Execution killed with signal 11 (could be triggered by violating memory limits)
2 Halted 0 ms 0 KB -