답안 #239930

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
239930 2020-06-17T14:14:32 Z Borbi Skandi (COCI20_skandi) C++14
50 / 110
67 ms 18808 KB
#include <bits/stdc++.h>

using namespace std;

/*struct edge
{
	int next, to, flow;
	edge(int _to, int _next, int _flow)
	{
		next = _next; to = _to; flow = _flow;
	}
};*/

const int MAXN = 1e4 + 5;

int n, m;
string str[MAXN];
/*edge e[MAXM];
int head[MAXN], br;

void add_edge(int v, int w, int c)
{
	e[br] = edge(w, head[v], c);
	head[v] = br++;
}*/
map <int, pair<int, int> > r_a, c_a;
int cntr, cntc;
int rw[MAXN][MAXN], col[MAXN][MAXN];
vector <int> graph[MAXN];
int vis[MAXN];

void read_input()
{
	cin >> n >> m;

	/*for(int i = 0; i < MAXN; i++)
	{
		head[i] = -1;
	}*/
	for(int i = 0; i < n; i++)
	{
		cin >> str[i];
	}
	for(int i = 1; i < n; i++)
	{
		for(int j = 1; j < m; j++)
		{
			if(str[i][j] == '1') continue;
			if(str[i][j - 1] == '1')
			{
				rw[i][j] = cntr++;
				r_a[cntr - 1] = {i, j};
			}
			else
			{
				rw[i][j] = rw[i][j - 1];
			}
			if(str[i - 1][j] == '1')
			{
				col[i][j] = cntc++;
				c_a[cntc - 1] = {i, j};
			}
			else
			{
				col[i][j] = col[i - 1][j];
			}
		}
	}
	for(int i = 1; i < n; i++)
	{
		for(int j = 1; j < m; j++)
		{
			if(str[i][j] == '0')
			{
				//cout << r_a[rw[i][j]].first << " " << r_a[rw[i][j]].second << " " << c_a[col[i][j]].first << " " << c_a[col[i][j]].second << "\n";
				graph[rw[i][j]].push_back(cntr + col[i][j]);
				graph[cntr + col[i][j]].push_back(rw[i][j]);
			}
		}
	}
	//cout << cntr << " " << cntc << "\n";
}

bool matched[MAXN];
int con[MAXN];
int timer;

bool match(int v)
{
	if(vis[v] == timer) return false;
	vis[v] = timer;
	for(auto x : graph[v])
	{
		if(con[x] == -1 || match(con[x]))
		{
			con[x] = v;
			return matched[v] = true;
		}
	}
	return false;
}

bool added[MAXN];
//vector <int> z;

void dfs(int v, bool t)
{
	if(!added[v])
	{	
		//z.push_back(v);
		added[v] = true;
	}
	else return;
	/*if(t)
	{
		cout << "DAS";
	}*/
	for(auto x : graph[v])
	{
		int tr = 1;
		if(con[x] == -1) tr = 0;
		if(t == 0)
		{
			if(con[x] != v)
				dfs(x, t ^ 1);
			//{
			//}
		}
		else
		{
			int tr = 1;
			if(con[v] == -1) tr = 0;
			if(con[v] == x)
			{
				dfs(x, t ^ 1);
			}
		}
	}
}

void solve()
{
	for(int i = 0; i < MAXN; i++)
	{
		con[i] = -1;
	}
	for(int i = 0; i < cntr; i++)
	{
		timer++;
		match(i);
		//cout << matched[i];
	}
	for(int i = 0; i < cntr; i++)
	{
		if(!matched[i])
		{
			dfs(i, 0);
		}
	}
	vector <int> fst, scnd;
	for(int i = 0; i < cntr; i++)
	{
		if(!added[i])
		{
			fst.push_back(i);
		}
	}
	for(int i = 0; i < cntc; i++)
	{
		if(added[i + cntr])
		{
			scnd.push_back(i);
		}
	}
	cout << fst.size() + scnd.size() << "\n";
	for(auto x : fst)
	{
		cout << r_a[x].first + 1 << " " << r_a[x].second << " DESNO\n"; 
	}
	for(auto x : scnd)
	{
		cout << c_a[x].first << " " << c_a[x].second + 1 << " DOLJE\n"; 
	}
}

int main()
{
	ios::sync_with_stdio(0);
	cin.tie(0);

	read_input();
	solve();

	return 0;
}

Compilation message

skandi.cpp: In function 'void dfs(int, bool)':
skandi.cpp:131:8: warning: variable 'tr' set but not used [-Wunused-but-set-variable]
    int tr = 1;
        ^~
skandi.cpp:120:7: warning: variable 'tr' set but not used [-Wunused-but-set-variable]
   int tr = 1;
       ^~
# 결과 실행 시간 메모리 Grader output
1 Correct 5 ms 896 KB Correct.
2 Correct 5 ms 1024 KB Correct.
3 Correct 5 ms 896 KB Correct.
4 Correct 5 ms 1024 KB Correct.
5 Correct 5 ms 1024 KB Correct.
6 Correct 5 ms 1024 KB Correct.
7 Correct 5 ms 1024 KB Correct.
8 Correct 6 ms 1104 KB Correct.
9 Correct 5 ms 1024 KB Correct.
10 Correct 5 ms 1024 KB Correct.
11 Correct 5 ms 1024 KB Correct.
12 Correct 5 ms 1024 KB Correct.
13 Correct 5 ms 896 KB Correct.
14 Correct 5 ms 1024 KB Correct.
15 Correct 5 ms 1024 KB Correct.
16 Correct 5 ms 1024 KB Correct.
17 Correct 5 ms 896 KB Correct.
18 Correct 5 ms 1152 KB Correct.
19 Correct 5 ms 1024 KB Correct.
20 Correct 5 ms 1024 KB Correct.
21 Correct 5 ms 896 KB Correct.
22 Correct 5 ms 1024 KB Correct.
23 Correct 5 ms 1024 KB Correct.
# 결과 실행 시간 메모리 Grader output
1 Correct 6 ms 2304 KB Correct.
2 Correct 6 ms 2432 KB Correct.
3 Correct 6 ms 3456 KB Correct.
4 Correct 6 ms 2048 KB Correct.
5 Correct 6 ms 2304 KB Correct.
6 Correct 7 ms 1664 KB Correct.
7 Correct 7 ms 1536 KB Correct.
8 Correct 6 ms 2432 KB Correct.
9 Correct 9 ms 5120 KB Correct.
10 Correct 8 ms 5248 KB Correct.
11 Correct 8 ms 5248 KB Correct.
12 Correct 8 ms 5248 KB Correct.
13 Correct 9 ms 5248 KB Correct.
14 Correct 8 ms 5504 KB Correct.
15 Correct 8 ms 5376 KB Correct.
16 Correct 8 ms 5248 KB Correct.
17 Correct 9 ms 5248 KB Correct.
18 Correct 8 ms 5248 KB Correct.
19 Correct 8 ms 5248 KB Correct.
20 Correct 9 ms 5248 KB Correct.
21 Correct 8 ms 5248 KB Correct.
22 Correct 8 ms 5248 KB Correct.
23 Correct 8 ms 5248 KB Correct.
24 Correct 12 ms 5248 KB Correct.
25 Correct 8 ms 5248 KB Correct.
26 Correct 9 ms 5248 KB Correct.
# 결과 실행 시간 메모리 Grader output
1 Correct 5 ms 896 KB Correct.
2 Correct 5 ms 1024 KB Correct.
3 Correct 5 ms 896 KB Correct.
4 Correct 5 ms 1024 KB Correct.
5 Correct 5 ms 1024 KB Correct.
6 Correct 5 ms 1024 KB Correct.
7 Correct 5 ms 1024 KB Correct.
8 Correct 6 ms 1104 KB Correct.
9 Correct 5 ms 1024 KB Correct.
10 Correct 5 ms 1024 KB Correct.
11 Correct 5 ms 1024 KB Correct.
12 Correct 5 ms 1024 KB Correct.
13 Correct 5 ms 896 KB Correct.
14 Correct 5 ms 1024 KB Correct.
15 Correct 5 ms 1024 KB Correct.
16 Correct 5 ms 1024 KB Correct.
17 Correct 5 ms 896 KB Correct.
18 Correct 5 ms 1152 KB Correct.
19 Correct 5 ms 1024 KB Correct.
20 Correct 5 ms 1024 KB Correct.
21 Correct 5 ms 896 KB Correct.
22 Correct 5 ms 1024 KB Correct.
23 Correct 5 ms 1024 KB Correct.
24 Correct 6 ms 2304 KB Correct.
25 Correct 6 ms 2432 KB Correct.
26 Correct 6 ms 3456 KB Correct.
27 Correct 6 ms 2048 KB Correct.
28 Correct 6 ms 2304 KB Correct.
29 Correct 7 ms 1664 KB Correct.
30 Correct 7 ms 1536 KB Correct.
31 Correct 6 ms 2432 KB Correct.
32 Correct 9 ms 5120 KB Correct.
33 Correct 8 ms 5248 KB Correct.
34 Correct 8 ms 5248 KB Correct.
35 Correct 8 ms 5248 KB Correct.
36 Correct 9 ms 5248 KB Correct.
37 Correct 8 ms 5504 KB Correct.
38 Correct 8 ms 5376 KB Correct.
39 Correct 8 ms 5248 KB Correct.
40 Correct 9 ms 5248 KB Correct.
41 Correct 8 ms 5248 KB Correct.
42 Correct 8 ms 5248 KB Correct.
43 Correct 9 ms 5248 KB Correct.
44 Correct 8 ms 5248 KB Correct.
45 Correct 8 ms 5248 KB Correct.
46 Correct 8 ms 5248 KB Correct.
47 Correct 12 ms 5248 KB Correct.
48 Correct 8 ms 5248 KB Correct.
49 Correct 9 ms 5248 KB Correct.
50 Runtime error 67 ms 18808 KB Execution killed with signal 11 (could be triggered by violating memory limits)
51 Halted 0 ms 0 KB -