| Task: | Mission |
| Sender: | multiply and surrender |
| Submission time: | 2015-10-07 17:45:20 +0300 |
| Language: | C++ |
| Status: | READY |
| Result: | ACCEPTED |
| test | verdict | time | |
|---|---|---|---|
| #1 | ACCEPTED | 0.05 s | details |
| #2 | ACCEPTED | 0.06 s | details |
| #3 | ACCEPTED | 0.06 s | details |
| #4 | ACCEPTED | 0.05 s | details |
| #5 | ACCEPTED | 0.05 s | details |
| #6 | ACCEPTED | 0.05 s | details |
| #7 | ACCEPTED | 0.05 s | details |
| #8 | ACCEPTED | 0.07 s | details |
| #9 | ACCEPTED | 0.05 s | details |
| #10 | ACCEPTED | 0.06 s | details |
| #11 | ACCEPTED | 0.05 s | details |
| #12 | ACCEPTED | 0.07 s | details |
| #13 | ACCEPTED | 0.04 s | details |
| #14 | ACCEPTED | 0.05 s | details |
| #15 | ACCEPTED | 0.05 s | details |
| #16 | ACCEPTED | 0.06 s | details |
| #17 | ACCEPTED | 0.05 s | details |
| #18 | ACCEPTED | 0.06 s | details |
| #19 | ACCEPTED | 0.06 s | details |
| #20 | ACCEPTED | 0.06 s | details |
| #21 | ACCEPTED | 0.05 s | details |
| #22 | ACCEPTED | 0.05 s | details |
| #23 | ACCEPTED | 0.05 s | details |
| #24 | ACCEPTED | 0.05 s | details |
| #25 | ACCEPTED | 0.06 s | details |
Compiler report
input/code.cpp: In function 'int main()':
input/code.cpp:68:17: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for (int j=0;j<s.size();j++) {
^Code
#include <iostream>
#include <vector>
#include <algorithm>
#define F first
#define S second
using namespace std;
int n,m,k;
int coi[8],coj[8];
int a[102][102];
int v[102][102];
int cod[8][8];
int dist[102][102];
vector<pair<int,int>> z;
int si,sj;
int ti,tj;
int sdist[8];
int tdist[8];
int per[8];
void clea() {
for (int i=1;i<=n;i++) {
for (int j=1;j<=m;j++) {
v[i][j]=0;
}
}
z.clear();
}
int visit(int ii,int jj) {
// cout << ii << " " << jj << "\n";
if (v[ii][jj] || !a[ii][jj]) return 0;
// cout << ii << " " << jj << "\n";
return 1;
}
void put(int ii, int jj, int hlp) {
// cout << ii << " " << jj << "\n";
v[ii][jj] = 1;
dist[ii][jj] = hlp+1;
// cout << dist[ii][jj] << "\n";
// cout << "--" << endl;
z.push_back(make_pair(ii, jj));
}
void bfs(int i, int j) {
// cout << "MOI\n";
v[i][j] = 1;
dist[i][j] = 0;
z.push_back(make_pair(i,j));
for (unsigned int lol= 0; lol < z.size(); lol++) {
// cout << "MOI2\n";
if (visit(z[lol].F+1,z[lol].S)) put(z[lol].F+1,z[lol].S,dist[z[lol].F][z[lol].S]);
if (visit(z[lol].F,z[lol].S-1)) put(z[lol].F,z[lol].S-1,dist[z[lol].F][z[lol].S]);
if (visit(z[lol].F,z[lol].S+1)) put(z[lol].F,z[lol].S+1,dist[z[lol].F][z[lol].S]);
if (visit(z[lol].F-1,z[lol].S)) put(z[lol].F-1,z[lol].S,dist[z[lol].F][z[lol].S]);
}
}
int main() {
cin >> n >> m >> k;
int ind =0;
for (int i=1;i<=n;i++) {
string s;
cin >> s;
for (int j=0;j<s.size();j++) {
if (s[j]!= '#') a[i][j+1]=1;
if (s[j]== '*') {
coi[ind]=i;
coj[ind]=j+1;
ind++;
}
if (s[j] == 'A') {
si=i;
sj=j+1;
}
if (s[j] == 'B') {
ti=i;
tj=j+1;
}
}
}
bfs(si,sj);
if (k==0){
cout << dist[ti][tj] << "\n";
return 0;
}
for (int i=0;i<k;i++) sdist[i]=dist[coi[i]][coj[i]];
for (int i=0;i<k;i++) {
clea();
bfs(coi[i],coj[i]);
for (int j=0;j<k;j++) {
cod[i][j]=dist[coi[j]][coj[j]];
}
}
clea();
bfs(ti,tj);
for (int i=0;i<k;i++) tdist[i] = dist[coi[i]][coj[i]];
for (int i=0;i<k;i++) per[i] = i;
int parsa = 1e9;
// for (int i=0;i<k;i++) cout << sdist[i] << "\n";
do {
int res=sdist[per[0]];
for (int i=1;i<k;i++) res += cod[per[i-1]][per[i]];
res += tdist[per[k-1]];
if (res < parsa) parsa = res;
} while (next_permutation(per,per+k));
cout << parsa << "\n";
}
Test details
Test 1
Verdict: ACCEPTED
| input |
|---|
| 84 87 2 ##############################... |
| correct output |
|---|
| 104 |
| user output |
|---|
| 104 |
Test 2
Verdict: ACCEPTED
| input |
|---|
| 100 100 8 ##############################... |
| correct output |
|---|
| 264 |
| user output |
|---|
| 264 |
Test 3
Verdict: ACCEPTED
| input |
|---|
| 26 51 1 ##############################... |
| correct output |
|---|
| 48 |
| user output |
|---|
| 48 |
Test 4
Verdict: ACCEPTED
| input |
|---|
| 100 100 8 ##############################... |
| correct output |
|---|
| 145 |
| user output |
|---|
| 145 |
Test 5
Verdict: ACCEPTED
| input |
|---|
| 68 50 7 ##############################... |
| correct output |
|---|
| 88 |
| user output |
|---|
| 88 |
Test 6
Verdict: ACCEPTED
| input |
|---|
| 100 100 8 ##############################... |
| correct output |
|---|
| 187 |
| user output |
|---|
| 187 |
Test 7
Verdict: ACCEPTED
| input |
|---|
| 61 79 6 ##############################... |
| correct output |
|---|
| 149 |
| user output |
|---|
| 149 |
Test 8
Verdict: ACCEPTED
| input |
|---|
| 100 100 8 ##############################... |
| correct output |
|---|
| 232 |
| user output |
|---|
| 232 |
Test 9
Verdict: ACCEPTED
| input |
|---|
| 94 27 6 ########################### ########################### ########################### #############.############# ... |
| correct output |
|---|
| 82 |
| user output |
|---|
| 82 |
Test 10
Verdict: ACCEPTED
| input |
|---|
| 100 100 0 ##############################... |
| correct output |
|---|
| 30 |
| user output |
|---|
| 30 |
Test 11
Verdict: ACCEPTED
| input |
|---|
| 65 100 6 ######.#######################... |
| correct output |
|---|
| 233 |
| user output |
|---|
| 233 |
Test 12
Verdict: ACCEPTED
| input |
|---|
| 100 100 8 ##############################... |
| correct output |
|---|
| 209 |
| user output |
|---|
| 209 |
Test 13
Verdict: ACCEPTED
| input |
|---|
| 75 18 3 ################## ################## ################## ################## ... |
| correct output |
|---|
| 72 |
| user output |
|---|
| 72 |
Test 14
Verdict: ACCEPTED
| input |
|---|
| 100 100 8 ##############################... |
| correct output |
|---|
| 196 |
| user output |
|---|
| 196 |
Test 15
Verdict: ACCEPTED
| input |
|---|
| 62 4 3 ###. #### #### #### ... |
| correct output |
|---|
| 44 |
| user output |
|---|
| 44 |
Test 16
Verdict: ACCEPTED
| input |
|---|
| 100 100 8 ##############################... |
| correct output |
|---|
| 231 |
| user output |
|---|
| 231 |
Test 17
Verdict: ACCEPTED
| input |
|---|
| 15 4 0 ###. .### #### #.#. ... |
| correct output |
|---|
| 4 |
| user output |
|---|
| 4 |
Test 18
Verdict: ACCEPTED
| input |
|---|
| 100 100 8 ##############################... |
| correct output |
|---|
| 300 |
| user output |
|---|
| 300 |
Test 19
Verdict: ACCEPTED
| input |
|---|
| 86 15 2 .########....## #########...... #########...... #########...... ... |
| correct output |
|---|
| 88 |
| user output |
|---|
| 88 |
Test 20
Verdict: ACCEPTED
| input |
|---|
| 100 100 8 ##############################... |
| correct output |
|---|
| 288 |
| user output |
|---|
| 288 |
Test 21
Verdict: ACCEPTED
| input |
|---|
| 51 90 3 ................................. |
| correct output |
|---|
| 103 |
| user output |
|---|
| 103 |
Test 22
Verdict: ACCEPTED
| input |
|---|
| 100 100 8 ................................. |
| correct output |
|---|
| 352 |
| user output |
|---|
| 352 |
Test 23
Verdict: ACCEPTED
| input |
|---|
| 22 91 4 ................................. |
| correct output |
|---|
| 128 |
| user output |
|---|
| 128 |
Test 24
Verdict: ACCEPTED
| input |
|---|
| 100 100 8 ................................. |
| correct output |
|---|
| 317 |
| user output |
|---|
| 317 |
Test 25
Verdict: ACCEPTED
| input |
|---|
| 49 42 6 ................................. |
| correct output |
|---|
| 175 |
| user output |
|---|
| 175 |
