CSES - UKIEPC 2016 - Results
Submission details
Task:Elegant Showroom
Sender:Game of Nolife
Submission time:2016-11-12 14:03:59 +0200
Language:C++
Status:READY
Result:ACCEPTED
Test results
testverdicttime
#1ACCEPTED0.05 sdetails
#2ACCEPTED0.06 sdetails
#3ACCEPTED0.06 sdetails
#4ACCEPTED0.07 sdetails
#5ACCEPTED0.06 sdetails
#6ACCEPTED0.06 sdetails
#7ACCEPTED0.05 sdetails
#8ACCEPTED0.07 sdetails
#9ACCEPTED0.05 sdetails
#10ACCEPTED0.05 sdetails
#11ACCEPTED0.05 sdetails
#12ACCEPTED0.06 sdetails
#13ACCEPTED0.05 sdetails
#14ACCEPTED0.05 sdetails
#15ACCEPTED0.05 sdetails
#16ACCEPTED0.06 sdetails

Code

#include <bits/stdc++.h>
#define F first
#define S second
#define X real()
#define Y imag()
using namespace std;
typedef long long ll;
typedef long double ld;

string s[444];

int dt[444][444];

int main(){
	ios_base::sync_with_stdio(0);
	cin.tie(0);
	int r,c;
	cin>>r>>c;
	for (int i=0;i<r;i++){
		cin>>s[i];
	}
	int x,y;
	cin>>x>>y;
	x--;
	y--;
	for (int i=0;i<r;i++){
		for (int ii=0;ii<c;ii++){
			dt[i][ii]=1e8;
		}
	}
	deque<pair<int, int> > bfs;
	bfs.push_back({x, y});
	dt[x][y]=1;
	while (!bfs.empty()){
		auto t=bfs.front();
		bfs.pop_front();
		for (int i=-1;i<=1;i++){
			for (int ii=-1;ii<=1;ii++){
				if ((i==0)^(ii==0)){
					int nx=t.F+i;
					int ny=t.S+ii;
					if (nx<0||ny<0||nx>=r||ny>c) continue;
					if (s[nx][ny]=='c'){
						if (dt[nx][ny]==0||dt[t.F][t.S]+1<dt[nx][ny]){
							dt[nx][ny]=dt[t.F][t.S]+1;
							bfs.push_back({nx, ny});
						}
					}
					else if(s[nx][ny]=='D'){
						if (dt[nx][ny]==0||dt[t.F][t.S]<dt[nx][ny]){
							dt[nx][ny]=dt[t.F][t.S];
							bfs.push_front({nx, ny});
						}
					}
				}
			}
		}
	}
	int v=1e9;
	for (int i=0;i<r;i++){
		if (s[i][0]=='D') v=min(v, dt[i][0]);
		if (s[i][c-1]=='D') v=min(v, dt[i][c-1]);
	}
	for (int i=0;i<c;i++){
		if (s[0][i]=='D') v=min(v, dt[0][i]);
		if (s[r-1][i]=='D') v=min(v, dt[r-1][i]);
	}
	cout<<v<<endl;
}

Test details

Test 1

Verdict: ACCEPTED

input
20 20
DDDDDDDDDDD##DD#DD#D
DDccccc#c##c##cDccDD
Dc#c#c#cc#ccc#c#Dc#D
DccDc#Dc####ccc#c#DD
...

correct output
3

user output
3

Test 2

Verdict: ACCEPTED

input
20 20
####################
#cccccccccccccccccc#
#c################c#
#c#cccccccccccccc#c#
...

correct output
179

user output
179

Test 3

Verdict: ACCEPTED

input
20 20
####################
#cccccccccccccccccc#
#cccccccccccccccccc#
#cccccccccccccccccc#
...

correct output
35

user output
35

Test 4

Verdict: ACCEPTED

input
400 400
DDD##D#DD##DDDDDDDD#DDDD###DDD...

correct output
63

user output
63

Test 5

Verdict: ACCEPTED

input
400 400
#DDD###D#DD#DD#DD##DDD##D#DDD#...

correct output
11

user output
11

Test 6

Verdict: ACCEPTED

input
400 400
DDDDDDD#D#DDDD##D#DDDDDDD#DD##...

correct output
37

user output
37

Test 7

Verdict: ACCEPTED

input
400 400
#######D#DDD#D##DD####DDDDDD##...

correct output
55

user output
55

Test 8

Verdict: ACCEPTED

input
400 400
DD############################...

correct output
184

user output
184

Test 9

Verdict: ACCEPTED

input
20 20
DDDDD#DDDDDDDDD##D#D
DccccD#DccccDcDD#c#D
Dc###DD#c#ccDcccc#DD
DccDc##DccccDcccc#DD
...

correct output
4

user output
4

Test 10

Verdict: ACCEPTED

input
5 6
####D#
#DDDD#
#D##c#
#DDDc#
...

correct output
1

user output
1

Test 11

Verdict: ACCEPTED

input
20 20
DDDDDD#DDDDDD#D#D#D#
Dc#cccccccDcc#ccccDD
DDcD#c##cDcc####Dc#D
D#Dcccc#D##ccc#c#D#D
...

correct output
5

user output
5

Test 12

Verdict: ACCEPTED

input
20 20
DDD#DDDD#DDDD#DDDD#D
Dc##DDccDccD#DDcDDDD
DcDDccc#cc#ccc##D##D
DcccD#cDc##Dcccc##D#
...

correct output
3

user output
3

Test 13

Verdict: ACCEPTED

input
20 20
#D###DD##DDDDDD###DD
DDcDDccccDccDccDcc#D
DcD##ccc#cDcDccccDD#
DDcccc#Dc####c##ccDD
...

correct output
7

user output
7

Test 14

Verdict: ACCEPTED

input
6 7
#######
#ccc#cD
#c#c#c#
#c#c#c#
...

correct output
14

user output
14

Test 15

Verdict: ACCEPTED

input
5 5
DDDDD
DDDDD
DDcDD
DDDDD
...

correct output
1

user output
1

Test 16

Verdict: ACCEPTED

input
3 3
###
#cD
###
2 2

correct output
1

user output
1