Submission #2387394


Source Code Expand

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

struct edge {
	int to, cap, rev;
};

vector<edge>G[7777]; bool used[7777]; int H, W;

void add_edge(int p1, int p2, int p3) {
	if (p1 < H*W && p2 < H*W) {
		if (((p1 / W) + (p1%W)) % 2 == 1) swap(p1, p2);
	}
	G[p1].push_back(edge{ p2,p3,(int)G[p2].size() });
	G[p2].push_back(edge{ p1,0,(int)G[p1].size() - 1 });
}
int dfs(int pos, int to, int cap) {
	if (pos == to) return cap;
	used[pos] = true;
	for (int i = 0; i < G[pos].size(); i++) {
		if (used[G[pos][i].to] == true || G[pos][i].cap == 0) continue;
		int V = dfs(G[pos][i].to, to, min(cap, G[pos][i].cap));
		if (V == 0) continue;
		G[pos][i].cap -= V;
		G[G[pos][i].to][G[pos][i].rev].cap += V;
		return V;
	}
	return 0;
}
int max_flow(int u, int v) {
	int fl = 0;
	while (true) {
		for (int i = 0; i < 7777; i++) used[i] = false;
		int C = dfs(u, v, 1000000007);
		if (C == 0) break;
		fl += C;
	}
	return fl;
}

int a[77][77], b[77][77], l[77][77], cost;

int main() {
	cin >> H >> W;
	for (int i = 1; i <= H; i++) {
		for (int j = 1; j <= W; j++) { cin >> a[i][j]; l[i][j] = (i - 1)*W + (j - 1); }
	}
	for (int i = 1; i <= H; i++) {
		for (int j = 1; j <= W; j++) {
			cin >> b[i][j];
			if (a[i][j] != b[i][j]) cost++;
		}
	}
	for (int i = 1; i <= H; i++) {
		for (int j = 1; j <= W; j++) {
			if (i <= H - 1 && a[i][j] != b[i][j] && a[i + 1][j] != b[i + 1][j] && a[i][j] != a[i + 1][j]) add_edge(l[i][j], l[i + 1][j], 1);
			if (j <= W - 1 && a[i][j] != b[i][j] && a[i][j + 1] != b[i][j + 1] && a[i][j] != a[i][j + 1]) add_edge(l[i][j], l[i][j + 1], 1);
			if ((i + j) % 2 == 0) add_edge(H*W, l[i][j], 1);
			if ((i + j) % 2 == 1) add_edge(l[i][j], H*W + 1, 1);
		}
	}
	int GG = max_flow(H*W, H*W + 1);
	cout << cost - GG << endl;
	return 0;
}

Submission Info

Submission Time
Task C - 天下一美術館
User E869120
Language C++14 (GCC 5.4.1)
Score 90
Code Size 1854 Byte
Status AC
Exec Time 150 ms
Memory 1408 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 512 KB
00_manual04.txt AC 1 ms 512 KB
00_manual05.txt AC 1 ms 512 KB
00_manual06.txt AC 1 ms 512 KB
00_manual07.txt AC 1 ms 512 KB
00_sample00.txt AC 1 ms 512 KB
00_sample01.txt AC 1 ms 512 KB
00_sample02.txt AC 1 ms 512 KB
00_small100.txt AC 1 ms 384 KB
00_small101.txt AC 1 ms 512 KB
00_small102.txt AC 1 ms 512 KB
00_small103.txt AC 1 ms 512 KB
00_small104.txt AC 1 ms 512 KB
00_small105.txt AC 1 ms 512 KB
00_small106.txt AC 1 ms 384 KB
00_small107.txt AC 1 ms 512 KB
00_small108.txt AC 1 ms 512 KB
00_small109.txt AC 1 ms 512 KB
00_small110.txt AC 1 ms 512 KB
00_small111.txt AC 1 ms 512 KB
00_small112.txt AC 1 ms 512 KB
00_small113.txt AC 1 ms 512 KB
00_small114.txt AC 1 ms 512 KB
00_small115.txt AC 1 ms 512 KB
00_small116.txt AC 1 ms 512 KB
00_small117.txt AC 1 ms 512 KB
00_small118.txt AC 1 ms 512 KB
00_small119.txt AC 1 ms 512 KB
00_small120.txt AC 1 ms 512 KB
00_small121.txt AC 1 ms 512 KB
00_small122.txt AC 1 ms 512 KB
00_small123.txt AC 1 ms 512 KB
00_small124.txt AC 1 ms 512 KB
00_small125.txt AC 1 ms 512 KB
00_small126.txt AC 1 ms 512 KB
00_small127.txt AC 1 ms 512 KB
00_small128.txt AC 1 ms 512 KB
00_small129.txt AC 1 ms 512 KB
00_small130.txt AC 1 ms 512 KB
00_small131.txt AC 1 ms 512 KB
00_small132.txt AC 1 ms 512 KB
00_small133.txt AC 1 ms 512 KB
00_small134.txt AC 1 ms 512 KB
00_small135.txt AC 1 ms 512 KB
00_small136.txt AC 1 ms 512 KB
00_small137.txt AC 1 ms 512 KB
00_small138.txt AC 1 ms 512 KB
00_small139.txt AC 1 ms 512 KB
00_small140.txt AC 1 ms 512 KB
00_small141.txt AC 1 ms 512 KB
00_small142.txt AC 1 ms 512 KB
00_small143.txt AC 1 ms 512 KB
00_small144.txt AC 1 ms 512 KB
00_small145.txt AC 1 ms 512 KB
00_small146.txt AC 1 ms 512 KB
00_small147.txt AC 1 ms 512 KB
00_small148.txt AC 1 ms 512 KB
00_small149.txt AC 1 ms 512 KB
00_small150.txt AC 1 ms 512 KB
00_small151.txt AC 1 ms 512 KB
00_small152.txt AC 1 ms 512 KB
00_small153.txt AC 1 ms 512 KB
00_small154.txt AC 1 ms 512 KB
00_small155.txt AC 1 ms 512 KB
00_small156.txt AC 1 ms 512 KB
00_small157.txt AC 1 ms 512 KB
00_small158.txt AC 1 ms 512 KB
01_large100.txt AC 1 ms 512 KB
01_large101.txt AC 2 ms 512 KB
01_large102.txt AC 1 ms 512 KB
01_large103.txt AC 2 ms 512 KB
01_large104.txt AC 2 ms 512 KB
01_large105.txt AC 4 ms 512 KB
01_large106.txt AC 1 ms 512 KB
01_large107.txt AC 1 ms 512 KB
01_large108.txt AC 39 ms 1408 KB
01_large1325.txt AC 50 ms 896 KB
01_large1327.txt AC 45 ms 1152 KB
01_large1330.txt AC 41 ms 1280 KB
01_large1339.txt AC 44 ms 896 KB
01_large1343.txt AC 49 ms 1152 KB
01_large1355.txt AC 43 ms 1152 KB
01_large1366.txt AC 46 ms 896 KB
01_large1367.txt AC 49 ms 896 KB
01_large1374.txt AC 50 ms 896 KB
01_large1380.txt AC 35 ms 896 KB
01_large1388.txt AC 80 ms 896 KB
01_large1395.txt AC 77 ms 896 KB
01_large1396.txt AC 41 ms 1280 KB
01_large1400.txt AC 39 ms 1280 KB
01_large1402.txt AC 69 ms 896 KB
01_large1405.txt AC 46 ms 896 KB
01_large1409.txt AC 49 ms 896 KB
01_large1413.txt AC 35 ms 1152 KB
01_large1417.txt AC 142 ms 1024 KB
01_large1423.txt AC 58 ms 896 KB
01_large1430.txt AC 84 ms 896 KB
01_large1437.txt AC 64 ms 896 KB
01_large1438.txt AC 55 ms 1152 KB
01_large1442.txt AC 41 ms 1280 KB
01_large1450.txt AC 58 ms 896 KB
01_large1459.txt AC 125 ms 1024 KB
01_large1464.txt AC 75 ms 896 KB
01_large1472.txt AC 88 ms 896 KB
01_large1478.txt AC 71 ms 896 KB
01_large1480.txt AC 50 ms 1280 KB
01_large1486.txt AC 65 ms 896 KB
01_large1492.txt AC 65 ms 896 KB
01_large1500.txt AC 53 ms 896 KB
01_large1501.txt AC 58 ms 1024 KB
01_large1502.txt AC 39 ms 896 KB
01_large1506.txt AC 45 ms 896 KB
01_large157.txt AC 80 ms 1024 KB
01_large207.txt AC 35 ms 1152 KB
01_large507.txt AC 150 ms 1024 KB
01_large577.txt AC 133 ms 1024 KB
01_large591.txt AC 135 ms 1024 KB
01_large893.txt AC 49 ms 1152 KB
01_manual_L00.txt AC 3 ms 768 KB
01_manual_L01.txt AC 3 ms 768 KB