| Task: | HIIT Speedrun |
| Sender: | .* |
| Submission time: | 2019-05-25 12:10:54 +0300 |
| Language: | C++ |
| Status: | READY |
| Result: | ACCEPTED |
| test | verdict | time | |
|---|---|---|---|
| #1 | ACCEPTED | 0.02 s | details |
| #2 | ACCEPTED | 0.02 s | details |
| #3 | ACCEPTED | 0.03 s | details |
| #4 | ACCEPTED | 0.02 s | details |
| #5 | ACCEPTED | 0.08 s | details |
| #6 | ACCEPTED | 0.03 s | details |
| #7 | ACCEPTED | 0.02 s | details |
| #8 | ACCEPTED | 0.02 s | details |
| #9 | ACCEPTED | 0.03 s | details |
| #10 | ACCEPTED | 0.02 s | details |
| #11 | ACCEPTED | 0.02 s | details |
| #12 | ACCEPTED | 0.02 s | details |
| #13 | ACCEPTED | 0.09 s | details |
Compiler report
input/code.cpp: In function 'void haku(int, int, int, int)':
input/code.cpp:20:16: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for(int i=0; i<ee[ind1].size(); i++) {
~^~~~~~~~~~~~~~~~
input/code.cpp:21:19: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for(int ii=0; ii<ee[ind2].size(); ii++) {
~~^~~~~~~~~~~~~~~~
input/code.cpp:24:22: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for(int iii=0; iii<ee[ind3].size(); iii++) {
~~~^~~~~~~~~~~~~~~~
input/code.cpp:27:25: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for(int iiii=0; iiii<ee[ind4].size(); iiii++) {
~~~~^~~~~~~~~~~~~~~~Code
#include <bits/stdc++.h>
#define ll long long
#define ld long double
#define ull unsigned long long
#define M 1000000007
#define N (1<<18)
#define P complex<long long>
#define X real()
#define Y imag()
using namespace std;
int n, m, a, b, z[101];
string s;
ll d[101][101], ans = 1e9;
vector<int> vrk[101];
vector<int> ee[3]; // H I T
void haku(int ind1, int ind2, int ind3, int ind4) {
for(int i=0; i<ee[ind1].size(); i++) {
for(int ii=0; ii<ee[ind2].size(); ii++) {
if(ee[ind1][i] == ee[ind2][ii])
continue;
for(int iii=0; iii<ee[ind3].size(); iii++) {
if(ee[ind1][i] == ee[ind3][iii] || ee[ind2][ii] == ee[ind3][iii])
continue;
for(int iiii=0; iiii<ee[ind4].size(); iiii++) {
if(ee[ind1][i] == ee[ind4][iiii] || ee[ind2][ii] == ee[ind4][iiii] || ee[ind3][iii] == ee[ind4][iiii])
continue;
ans = min(ans, d[1][ee[ind1][i]]+d[ee[ind1][i]][ee[ind2][ii]]+d[ee[ind2][ii]][ee[ind3][iii]]+d[ee[ind3][iii]][ee[ind4][iiii]]+d[ee[ind4][iiii]][n]);
}
}
}
}
}
int main() {
cin.tie(0);
cout.tie(0);
ios_base::sync_with_stdio(0);
cin >> n >> m;
cin >> s;
s = "#" + s;
for(int i=1; i<=n; i++) {
if(s[i] == 'H') {
ee[0].push_back(i);
} else if(s[i] == 'I') {
ee[1].push_back(i);
} else if(s[i] == 'T') {
ee[2].push_back(i);
}
}
for(int i=0; i<m; i++) {
cin >> a >> b;
vrk[a].push_back(b);
vrk[b].push_back(a);
}
for(int i=0; i<=n; i++) {
for(int j=1; j<=n; j++)
d[i][j] = 1e9;
}
for(int i=1; i<=n; i++) {
for(int j=1; j<=n; j++)
z[j] = 0;
queue<pair<int,int>> q;
q.push(make_pair(i,0));
while(!q.empty()) {
int s = q.front().first;
int dii = q.front().second;
q.pop();
if(z[s])
continue;
z[s] = 1;
d[i][s] = dii;
for(auto u:vrk[s]) {
if(z[u])
continue;
q.push(make_pair(u, dii+1));
}
}
}
vector<int> vv;
vv.push_back(0);
vv.push_back(1);
vv.push_back(1);
vv.push_back(2);
sort(vv.begin(), vv.end());
do {
haku(vv[0], vv[1], vv[2], vv[3]);
} while(next_permutation(vv.begin(), vv.end()));
if(ans == 1e9)
cout << "IMPOSSIBLE";
else
cout << ans;
}
Test details
Test 1
Verdict: ACCEPTED
| input |
|---|
| 4 0 HIIT |
| correct output |
|---|
| IMPOSSIBLE |
| user output |
|---|
| IMPOSSIBLE |
Test 2
Verdict: ACCEPTED
| input |
|---|
| 4 3 HIIT 1 2 2 3 3 4 |
| correct output |
|---|
| 3 |
| user output |
|---|
| 3 |
Test 3
Verdict: ACCEPTED
| input |
|---|
| 4 3 HIIT 4 3 3 2 2 1 |
| correct output |
|---|
| 3 |
| user output |
|---|
| 3 |
Test 4
Verdict: ACCEPTED
| input |
|---|
| 6 5 XHIITX 1 2 1 3 1 4 ... |
| correct output |
|---|
| 9 |
| user output |
|---|
| 9 |
Test 5
Verdict: ACCEPTED
| input |
|---|
| 100 5000 TIIIIIIITHHHTHHHIHIIHIHHHITHIH... |
| correct output |
|---|
| 3 |
| user output |
|---|
| 3 |
Test 6
Verdict: ACCEPTED
| input |
|---|
| 100 99 HIIIIIIIIIIIIIIIIIIIIIIIIIIIII... |
| correct output |
|---|
| 99 |
| user output |
|---|
| 99 |
Test 7
Verdict: ACCEPTED
| input |
|---|
| 10 10 AAAHIITAAA 1 2 2 3 3 4 ... |
| correct output |
|---|
| 9 |
| user output |
|---|
| 9 |
Test 8
Verdict: ACCEPTED
| input |
|---|
| 9 9 HIIIIIIIT 1 2 2 3 3 4 ... |
| correct output |
|---|
| 4 |
| user output |
|---|
| 4 |
Test 9
Verdict: ACCEPTED
| input |
|---|
| 9 9 HIIIIAAAT 1 2 2 3 3 4 ... |
| correct output |
|---|
| 5 |
| user output |
|---|
| 5 |
Test 10
Verdict: ACCEPTED
| input |
|---|
| 100 99 HIIIIIIIIIIIIIIIIIIIIIIIIIIIII... |
| correct output |
|---|
| 197 |
| user output |
|---|
| 197 |
Test 11
Verdict: ACCEPTED
| input |
|---|
| 8 8 HIITHIIT 1 2 2 3 3 4 ... |
| correct output |
|---|
| IMPOSSIBLE |
| user output |
|---|
| IMPOSSIBLE |
Test 12
Verdict: ACCEPTED
| input |
|---|
| 6 5 HIIITI 1 2 2 3 3 4 ... |
| correct output |
|---|
| IMPOSSIBLE |
| user output |
|---|
| IMPOSSIBLE |
Test 13
Verdict: ACCEPTED
| input |
|---|
| 100 99 HHHHHHHHHHHHHHHHHHHHHHHHHIIIII... |
| correct output |
|---|
| 99 |
| user output |
|---|
| 99 |
