제출 #902789

#제출 시각아이디문제언어결과실행 시간메모리
902789vjudge1무지개나라 (APIO17_rainbow)C++11
11 / 100
3086 ms1048576 KiB
#include "rainbow.h" #include<bits/stdc++.h> using namespace std; vector< vector<bool> >matriz; void init(int R, int C, int sr, int sc, int M, char *S) { matriz = vector< vector<bool> > (R,vector<bool>(C,true)); sr--; sc--; matriz[sr][sc]=0; for(int i=0;i<M;i++){///marcando el camino de la serpiente int dir=S[i]; if(dir=='N')sr--; if(dir=='W')sc--; if(dir=='S')sr++; if(dir=='E')sc++; matriz[sr][sc]=0; } } int colour(int ar, int ac, int br, int bc) { ar--; ac--; br--; bc--; vector< vector<bool> >visitados(matriz.size(),vector<bool> (matriz[0].size(),false)); int cont=0; for(int i=ar;i<=br;i++){ for(int j=ac;j<=bc;j++){ if(matriz[i][j] && !visitados[i][j]){///si no esta pintado y podemos ir por ahí visitados[i][j]=1;///lo pintamos cont++;///nuevo color queue< pair<int,int> >q;///cola donde almacenaremos los caminos q.push(make_pair(i,j));///comenzaremos nuestro camino while(!q.empty()){ int px=q.front().first,py=q.front().second,px1=px-1,py1=py,px2=px,py2=py-1,px3=px+1,py3=py,px4=px,py4=py+1;///designando nuevas direcciones a N,W,S,E q.pop(); if(px1>=ar && px1<=br && py1>=ac && py1<=bc){///si es territorio dentro de la zona if(matriz[px1][py1] && !visitados[px1][py1]){///si no esta pintado y podemos ir por ahí visitados[px1][py1]=1;///lo pintamos q.push(make_pair(px1,py1));///nuevo camino } } if(px2>=ar && px2<=br && py2>=ac && py2<=bc){ if(matriz[px2][py2] && !visitados[px2][py2]){ visitados[px2][py2]=1; q.push(make_pair(px2,py2)); } } if(px3>=ar && px3<=br && py3>=ac && py3<=bc){ if(matriz[px3][py3] && !visitados[px3][py3]){ visitados[px3][py3]=1; q.push(make_pair(px3,py3)); } } if(px4>=ar && px4<=br && py4>=ac && py4<=bc){ if(matriz[px4][py4] && !visitados[px4][py4]){ visitados[px4][py4]=1; q.push(make_pair(px4,py4)); } } } } } } return cont; } /*int main(){ int R,C,M,Q,sr,sc,ar,ac,br,bc; string S; cin>>R>>C>>M>>Q; cin>>sr>>sc; cin>>S; init(R,C,sr,sc,M,S); for(int i=0;i<Q;i++){ cin>>ar>>ac>>br>>bc; int ans=colour(ar,ac,br,bc); cout<<ans<<"\n"; } return 0; }*/
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...