제출 #409701

#제출 시각아이디문제언어결과실행 시간메모리
409701dreezyNowruz (IOI17_nowruz)Text
0 / 100
0 ms0 KiB
#include <bits/stdc++.h>
using namespace std;
#define x first
#define y second
#define pi pair<int,int>
#define pb push_back
const int maxn = 1e3 + 100;

char grid[maxn][maxn];
bool vis[maxn][maxn];
pi dirs[] ={{0,-1}, {0,1}, {-1,0},{1,0} };
int height, width;



void dfs(pi node, pi parent){
	vis[node.y][node.x] = true;
	
	vector<pi> goodadj;
	for(pi dir : dirs){
		pi adj = {node.x + dir.x, node.y + dir.y};
		
		if(adj == parent) continue;
		
		if (adj.x < 0 || adj.x >= width || adj.y <0 || adj.y >=height) continue;
		
		if(grid[adj.y][adj.x] !='.') continue;
		
		if(vis[adj.y][adj.x]){
			grid[node.y][node.x] = 'X';
			vis[node.y][node.x] = false;
			goodadj.clear(); 
			break;
		}
		else{
			goodadj.pb(adj);
		}
	}
	
	for( pi adj : goodadj){
		dfs(adj, node);
	}
}



int main(){
	cin >> height >> width;
	
	int kids; cin >> kids;
	
	for(int y = 0; y<height; y++){
		string line; cin >> line;
		
		for(int x =0; x<width; x++){
			grid[y][x] = line.at(x);
		}
	}
	
	
	for(int y = 0; y<height; y++){
		bool df = false;
		for(int x =0; x<width; x++){
			if(grid[y][x] =='.' ){
				dfs({x,y}, {-1,-1});
				df = true;
				break;
			}
		}
		if(df) break;
	}
	
	
	for(int y = 0; y<height; y++){
		for(int x =0; x<width; x++){
			if(grid[y][x] =='.' && !vis[y][x]){
				grid[y][x] = 'X';
			}
			cout << grid[y][x];
		}
		cout << endl;
	}
	/*
	cout << endl<<endl;
	
	for(int y = 0; y<height; y++){
		for(int x =0; x<width; x++){
			cout << vis[y][x];
		}
		cout << endl;
	}*/
}
#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...
#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...