Submission #3265142


Source Code Expand

#include <bits/stdc++.h>
using namespace std;
typedef long long unsigned int ll;

#define EPS (1e-7)
#define INF (1e9)
#define PI (acos(-1))

struct max_flow {
    struct edge { int to, cap, rev; };
    int V;
    vector<vector<edge>> G;
    vector<int> itr, level;

    max_flow(int V) : V(V) { G.assign(V,vector<edge>()); }

    void add_edge(int from, int to, int cap) {
        G[from].push_back((edge) {to, cap, (int) G[to].size()});
        G[to].push_back((edge) {from, 0, (int) G[from].size()-1});
    }

    void bfs(int s) {
        level.assign(V,-1);
        queue<int> q;
        level[s] = 0; q.push(s);
        while (!q.empty()) {
            int v = q.front(); q.pop();
            for(auto &e: G[v]){
                if (e.cap > 0 and level[e.to] < 0) {
                    level[e.to] = level[v] + 1;
                    q.push(e.to);
                }
            }
        }
    }

    int dfs(int v, int t, int f) {
        if (v == t) return f;
        for (int& i = itr[v]; i < (int) G[v].size(); ++i) {
            edge& e = G[v][i];
            if (e.cap > 0 and level[v] < level[e.to]) {
                int d = dfs(e.to, t, min(f, e.cap));
                if (d > 0) {
                    e.cap -= d;
                    G[e.to][e.rev].cap += d;
                    return d;
                }
            }
        }
        return 0;
    }

    int run(int s, int t) {
        int ret = 0, f;
        while (bfs(s), level[t] >= 0) {
            itr.assign(V,0);
            while ((f = dfs(s, t, INF)) > 0) ret += f;
        }
        return ret;
    }
};

int main() {
    //cout.precision(10);
    max_flow graph(5050);
    int n, m;
    cin >> m >> n;
    int a[75][75];
    int b[75][75];
    for(int i = 1; i <= m; i++){
        for(int j = 1; j <= n; j++){
            cin >> a[i][j];
        }
    }
    for(int i = 1; i <= m; i++){
        for(int j = 1; j <= n; j++){
            cin >> b[i][j];
        }
    }
    int ans = 0;
    for(int i = 1; i <= m; i++){
        for(int j = 1; j <= n; j++){
            if(!((a[i][j] == 1) && (b[i][j] == 0))){
                continue;
            }
            ans++;
            graph.add_edge(i * 70 + j, 5040, 1);
        }
    }
    int di[4] = {1, -1, 0, 0};
    int dj[4] = {0, 0, 1, -1};
    for(int i = 1; i <= m; i++){
        for(int j = 1; j <= n; j++){
            if(!((a[i][j] == 0) && (b[i][j] == 1))){
                continue;
            }
            ans++;
            graph.add_edge(0, i * 70 + j, 1);
            for(int k = 0; k <= 3; k++){
                int newi = i + di[k];
                int newj = j + dj[k];
                if(newi <= 0){
                    continue;
                }
                if(newj <= 0){
                    continue;
                }
                if(newi > m){
                    continue;
                }
                if(newj > n){
                    continue;
                }
                if((a[newi][newj] == 1) && (b[newi][newj] == 0)){
                    graph.add_edge(i * 70 + j, newi * 70 + newj, 1);
                }
            }
        }
    }
    cout << ans - graph.run(0, 5040) << endl;
    return 0;
}

Submission Info

Submission Time
Task C - 天下一美術館
User kort0n
Language C++14 (GCC 5.4.1)
Score 90
Code Size 3301 Byte
Status AC
Exec Time 12 ms
Memory 1024 KB

Judge Result

Set Name small All
Score / Max Score 40 / 40 50 / 50
Status
AC × 67
AC × 120
Set Name Test Cases
small 00_manual03.txt, 00_manual04.txt, 00_manual05.txt, 00_manual06.txt, 00_manual07.txt, 00_sample00.txt, 00_sample01.txt, 00_sample02.txt, 00_small100.txt, 00_small101.txt, 00_small102.txt, 00_small103.txt, 00_small104.txt, 00_small105.txt, 00_small106.txt, 00_small107.txt, 00_small108.txt, 00_small109.txt, 00_small110.txt, 00_small111.txt, 00_small112.txt, 00_small113.txt, 00_small114.txt, 00_small115.txt, 00_small116.txt, 00_small117.txt, 00_small118.txt, 00_small119.txt, 00_small120.txt, 00_small121.txt, 00_small122.txt, 00_small123.txt, 00_small124.txt, 00_small125.txt, 00_small126.txt, 00_small127.txt, 00_small128.txt, 00_small129.txt, 00_small130.txt, 00_small131.txt, 00_small132.txt, 00_small133.txt, 00_small134.txt, 00_small135.txt, 00_small136.txt, 00_small137.txt, 00_small138.txt, 00_small139.txt, 00_small140.txt, 00_small141.txt, 00_small142.txt, 00_small143.txt, 00_small144.txt, 00_small145.txt, 00_small146.txt, 00_small147.txt, 00_small148.txt, 00_small149.txt, 00_small150.txt, 00_small151.txt, 00_small152.txt, 00_small153.txt, 00_small154.txt, 00_small155.txt, 00_small156.txt, 00_small157.txt, 00_small158.txt
All 00_manual03.txt, 00_manual04.txt, 00_manual05.txt, 00_manual06.txt, 00_manual07.txt, 00_sample00.txt, 00_sample01.txt, 00_sample02.txt, 00_small100.txt, 00_small101.txt, 00_small102.txt, 00_small103.txt, 00_small104.txt, 00_small105.txt, 00_small106.txt, 00_small107.txt, 00_small108.txt, 00_small109.txt, 00_small110.txt, 00_small111.txt, 00_small112.txt, 00_small113.txt, 00_small114.txt, 00_small115.txt, 00_small116.txt, 00_small117.txt, 00_small118.txt, 00_small119.txt, 00_small120.txt, 00_small121.txt, 00_small122.txt, 00_small123.txt, 00_small124.txt, 00_small125.txt, 00_small126.txt, 00_small127.txt, 00_small128.txt, 00_small129.txt, 00_small130.txt, 00_small131.txt, 00_small132.txt, 00_small133.txt, 00_small134.txt, 00_small135.txt, 00_small136.txt, 00_small137.txt, 00_small138.txt, 00_small139.txt, 00_small140.txt, 00_small141.txt, 00_small142.txt, 00_small143.txt, 00_small144.txt, 00_small145.txt, 00_small146.txt, 00_small147.txt, 00_small148.txt, 00_small149.txt, 00_small150.txt, 00_small151.txt, 00_small152.txt, 00_small153.txt, 00_small154.txt, 00_small155.txt, 00_small156.txt, 00_small157.txt, 00_small158.txt, 01_large100.txt, 01_large101.txt, 01_large102.txt, 01_large103.txt, 01_large104.txt, 01_large105.txt, 01_large106.txt, 01_large107.txt, 01_large108.txt, 01_large1325.txt, 01_large1327.txt, 01_large1330.txt, 01_large1339.txt, 01_large1343.txt, 01_large1355.txt, 01_large1366.txt, 01_large1367.txt, 01_large1374.txt, 01_large1380.txt, 01_large1388.txt, 01_large1395.txt, 01_large1396.txt, 01_large1400.txt, 01_large1402.txt, 01_large1405.txt, 01_large1409.txt, 01_large1413.txt, 01_large1417.txt, 01_large1423.txt, 01_large1430.txt, 01_large1437.txt, 01_large1438.txt, 01_large1442.txt, 01_large1450.txt, 01_large1459.txt, 01_large1464.txt, 01_large1472.txt, 01_large1478.txt, 01_large1480.txt, 01_large1486.txt, 01_large1492.txt, 01_large1500.txt, 01_large1501.txt, 01_large1502.txt, 01_large1506.txt, 01_large157.txt, 01_large207.txt, 01_large507.txt, 01_large577.txt, 01_large591.txt, 01_large893.txt, 01_manual_L00.txt, 01_manual_L01.txt
Case Name Status Exec Time Memory
00_manual03.txt AC 1 ms 384 KB
00_manual04.txt AC 1 ms 384 KB
00_manual05.txt AC 1 ms 384 KB
00_manual06.txt AC 1 ms 384 KB
00_manual07.txt AC 1 ms 384 KB
00_sample00.txt AC 1 ms 384 KB
00_sample01.txt AC 1 ms 384 KB
00_sample02.txt AC 1 ms 384 KB
00_small100.txt AC 1 ms 384 KB
00_small101.txt AC 1 ms 384 KB
00_small102.txt AC 1 ms 384 KB
00_small103.txt AC 1 ms 384 KB
00_small104.txt AC 1 ms 384 KB
00_small105.txt AC 1 ms 384 KB
00_small106.txt AC 1 ms 384 KB
00_small107.txt AC 1 ms 384 KB
00_small108.txt AC 1 ms 384 KB
00_small109.txt AC 1 ms 384 KB
00_small110.txt AC 1 ms 384 KB
00_small111.txt AC 1 ms 384 KB
00_small112.txt AC 1 ms 384 KB
00_small113.txt AC 1 ms 384 KB
00_small114.txt AC 1 ms 384 KB
00_small115.txt AC 1 ms 384 KB
00_small116.txt AC 1 ms 384 KB
00_small117.txt AC 1 ms 384 KB
00_small118.txt AC 1 ms 384 KB
00_small119.txt AC 1 ms 384 KB
00_small120.txt AC 1 ms 384 KB
00_small121.txt AC 1 ms 384 KB
00_small122.txt AC 1 ms 384 KB
00_small123.txt AC 1 ms 384 KB
00_small124.txt AC 1 ms 384 KB
00_small125.txt AC 1 ms 384 KB
00_small126.txt AC 1 ms 384 KB
00_small127.txt AC 1 ms 384 KB
00_small128.txt AC 1 ms 384 KB
00_small129.txt AC 1 ms 384 KB
00_small130.txt AC 1 ms 384 KB
00_small131.txt AC 1 ms 384 KB
00_small132.txt AC 1 ms 384 KB
00_small133.txt AC 1 ms 384 KB
00_small134.txt AC 1 ms 384 KB
00_small135.txt AC 1 ms 384 KB
00_small136.txt AC 1 ms 384 KB
00_small137.txt AC 1 ms 384 KB
00_small138.txt AC 1 ms 384 KB
00_small139.txt AC 1 ms 384 KB
00_small140.txt AC 1 ms 384 KB
00_small141.txt AC 1 ms 384 KB
00_small142.txt AC 1 ms 384 KB
00_small143.txt AC 1 ms 384 KB
00_small144.txt AC 1 ms 384 KB
00_small145.txt AC 1 ms 384 KB
00_small146.txt AC 1 ms 384 KB
00_small147.txt AC 1 ms 384 KB
00_small148.txt AC 1 ms 384 KB
00_small149.txt AC 1 ms 384 KB
00_small150.txt AC 1 ms 384 KB
00_small151.txt AC 1 ms 384 KB
00_small152.txt AC 1 ms 384 KB
00_small153.txt AC 1 ms 384 KB
00_small154.txt AC 1 ms 384 KB
00_small155.txt AC 1 ms 384 KB
00_small156.txt AC 1 ms 384 KB
00_small157.txt AC 1 ms 384 KB
00_small158.txt AC 1 ms 384 KB
01_large100.txt AC 1 ms 384 KB
01_large101.txt AC 1 ms 384 KB
01_large102.txt AC 1 ms 384 KB
01_large103.txt AC 2 ms 512 KB
01_large104.txt AC 1 ms 512 KB
01_large105.txt AC 2 ms 512 KB
01_large106.txt AC 1 ms 512 KB
01_large107.txt AC 1 ms 512 KB
01_large108.txt AC 4 ms 1024 KB
01_large1325.txt AC 7 ms 768 KB
01_large1327.txt AC 10 ms 1024 KB
01_large1330.txt AC 7 ms 1024 KB
01_large1339.txt AC 6 ms 768 KB
01_large1343.txt AC 10 ms 1024 KB
01_large1355.txt AC 9 ms 1024 KB
01_large1366.txt AC 9 ms 896 KB
01_large1367.txt AC 6 ms 768 KB
01_large1374.txt AC 7 ms 896 KB
01_large1380.txt AC 8 ms 896 KB
01_large1388.txt AC 7 ms 768 KB
01_large1395.txt AC 6 ms 768 KB
01_large1396.txt AC 11 ms 1024 KB
01_large1400.txt AC 7 ms 1024 KB
01_large1402.txt AC 7 ms 768 KB
01_large1405.txt AC 5 ms 768 KB
01_large1409.txt AC 6 ms 768 KB
01_large1413.txt AC 9 ms 1024 KB
01_large1417.txt AC 9 ms 1024 KB
01_large1423.txt AC 6 ms 768 KB
01_large1430.txt AC 7 ms 896 KB
01_large1437.txt AC 6 ms 768 KB
01_large1438.txt AC 10 ms 1024 KB
01_large1442.txt AC 7 ms 1024 KB
01_large1450.txt AC 7 ms 896 KB
01_large1459.txt AC 9 ms 896 KB
01_large1464.txt AC 9 ms 896 KB
01_large1472.txt AC 7 ms 768 KB
01_large1478.txt AC 8 ms 896 KB
01_large1480.txt AC 10 ms 1024 KB
01_large1486.txt AC 8 ms 768 KB
01_large1492.txt AC 8 ms 896 KB
01_large1500.txt AC 8 ms 768 KB
01_large1501.txt AC 12 ms 896 KB
01_large1502.txt AC 5 ms 768 KB
01_large1506.txt AC 8 ms 896 KB
01_large157.txt AC 9 ms 896 KB
01_large207.txt AC 8 ms 1024 KB
01_large507.txt AC 9 ms 896 KB
01_large577.txt AC 10 ms 896 KB
01_large591.txt AC 10 ms 896 KB
01_large893.txt AC 9 ms 1024 KB
01_manual_L00.txt AC 3 ms 640 KB
01_manual_L01.txt AC 3 ms 384 KB