| # | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
|---|---|---|---|---|---|---|---|
| 390845 | A_D | Paint (COI20_paint) | C++14 | 321 ms | 524292 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <bits/stdc++.h>
//#define int long long
using namespace std;
const int N=1e6+100;
int a[N];
vector<int> idx[N];
int p[N];
set<int> st[N];
vector<int> vec;
set<int> q;
int x[]={0,0,1,-1 };
int y[]={1,-1,0,0 };
int find(int u)
{
if(u==p[u])return u;
return p[u]=find(p[u]);
}
void compine(int u,int v,int c)
{
if(st[u].size()>st[v].size())swap(u,v);
p[u]=v;
for(auto x:st[u])st[v].insert(x);
st[u].clear();
a[v]=c;
}
int n,m;
void solve()
{
cin>>n>>m;
for(int i=1;i<=n;i++){
idx[i].resize(m+10);
}
int cnt=0;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cnt++;
scanf("%d",&a[cnt]);
p[cnt]=cnt;
idx[i][j]=cnt;
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
int i1=idx[i][j];
int u=find(i1);
vec.clear();
for(int k=0;k<4;k++){
int ni=i+x[k];
int nj=j+y[k];
if(min(ni,nj)==0)continue;
if(ni>n||nj>m)continue;
int i2=idx[ni][nj];
int v=find(i2);
if(a[i1]==a[i2]){
if(u!=v){
vec.push_back(v);
}
}
else{
st[u].insert(v);
}
}
for(auto x:vec){
compine(u,x,a[u]);
}
}
}
int q;
cin>>q;
while(q--){
// fix();
int c,i,j;
scanf("%d",&i);
scanf("%d",&j);
scanf("%d",&c);
int me=idx[i][j];
me=find(me);
// if(!q)cout<<me<<" "<<a[me]<<endl;
if(a[me]==c)continue;
a[me]=c;
vec.clear();
for(auto x:st[me]){
if(a[x]==c)vec.push_back(x);
}
for(auto x:vec){
me=find(me);
compine(me,x,c);
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
int me=idx[i][j];
me=find(me);
cout<<a[me]<<" ";
}
cout<<endl;
}
}
main()
{
int t=1;
// cin>>t;
while(t--)solve();
}
컴파일 시 표준 에러 (stderr) 메시지
| # | 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... | ||||
