이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int MOD = 1e9 + 7;
const int MAXN = (int)5007;
const int MAXS = (int)5e5 + 7;
const int infint = (int)1e9;
const ll inf = (ll)1e18;
int color[2][MAXN][MAXN];
int id[MAXN][MAXN];
int ans[MAXS], a, b, m;
void dfs(int p, int u, int v, int c1, int c2)
{
int tmp = color[1 - p][v][c1];
color[p][u][c1] = v;
color[1 - p][v][c1] = u;
if(!tmp)
{
color[1 - p][v][c2] = 0;
return;
}
dfs(1 - p, v, tmp, c2, c1);
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(0); cout.tie(0);
cin >> a >> b >> m;
int cnt = 0;
for(int i = 1; i <= m; i++)
{
int u, v;
cin >> u >> v;
id[u][v] = i;
int c1 = 1, c2 = 1;
while(color[0][u][c1]) c1++;
while(color[1][v][c2]) c2++;
cnt = max(cnt, max(c1,c2));
if(c1 == c2)
color[0][u][c1]=v, color[1][v][c1]=u;
else
dfs(0, u, v, c1, c2);
}
cout << cnt << "\n";
for(int i = 1; i <= a; i++)
for(int j = 1; j <= cnt; j++)
if(color[0][i][j] != 0)
ans[id[i][color[0][i][j]]] = j;
for (int i = 1; i <= m; i++)
cout << ans[i] << " ";
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |