# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
394778 | Nima_Naderi | Portals (BOI14_portals) | C++14 | Compilation error | 0 ms | 0 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
/In the name of GOD
#include<bits/stdc++.h>
using namespace std;
//typedef long long ll;
typedef int ll;
const ll MXN = 1e6 + 5;
const ll MXK = 1e3 + 5;
const ll INF = 1e9;
ll n, m;
ll gin[MXN], Q[MXN], dis[MXN], nxt[4][MXN];
string s[MXK];
vector<ll> adj[MXN], lvl[MXN];
vector<pair<ll, ll>> G[MXN];
vector<pair<ll, ll>> dir = {{0, 1}, {1, 0}, {0, -1}, {-1, 0}};
bool wall[4][MXN], vis[MXN];
inline ll Id(ll i, ll j){
return i * m + j + 1;
}
inline bool check(ll x, ll y){
return (0 <= x && x < n && 0 <= y && y < m);
}
void BFS0(){
ll L = 0, R = -1;
for(int i = 1; i <= n * m; i ++){
if(!gin[i]) vis[i] = 1, Q[++ R] = i;
}
while(L < R){
ll u = Q[L ++];
for(auto v : adj[u]){
if(!vis[v]){
gin[v] = gin[u] + 1;
Q[++ R] = v; vis[v] = 1;
}
}
}
}
ll DIJ(ll src, ll snk){
memset(vis, 0, sizeof vis);
memset(dis, 31, sizeof dis);
dis[src] = 0; lvl[0].push_back(src);
for(int d = 0; d < MXN; d ++){
for(auto u : lvl[d]){
if(vis[u]) continue;
if(u == snk) return d;
vis[u] = 1;
for(auto Pr : G[u]){
ll v, w; tie(v, w) = Pr;
if(!vis[v] && w + d < dis[v]){
dis[v] = w + d;
lvl[dis[v]].push_back(v);
}
}
}
}
return -1;
}
int main(){
ios::sync_with_stdio(0);cin.tie(0); cout.tie(0);
cin >> n >> m; ll src, snk;
for(int i = 0; i < n; i ++) cin >> s[i];
for(int i = 0; i < n; i ++){
for(int j = 0; j < m; j ++){
ll u = Id(i, j); gin[u] = INF;
if(s[i][j] == '#') continue;
if(s[i][j] == 'S') src = Id(i, j);
if(s[i][j] == 'C') snk = Id(i, j);
for(int d = 0; d < 4; d ++){
ll ip = i + dir[d].first, jp = j + dir[d].second;
if(!check(ip, jp) || s[ip][jp] == '#') wall[d][u] = 1, gin[u] = 0;
else adj[u].push_back(Id(ip, jp));
}
}
}
for(int i = 0; i < n; i ++){
for(int j = 0; j < m; j ++){
if(s[i][j] == '#') continue;
ll u = Id(i, j);
nxt[2][u] = (wall[2][u] ? u : nxt[2][Id(i, j - 1)]);
}
for(int j = m - 1; ~j; j --){
if(s[i][j] == '#') continue;
ll u = Id(i, j);
nxt[0][u] = (wall[0][u] ? u : nxt[0][Id(i, j + 1)]);
}
}
for(int j = 0; j < m; j ++){
for(int i = 0; i < n; i ++){
if(s[i][j] == '#') continue;
ll u = Id(i, j);
nxt[3][u] = (wall[3][u] ? u : nxt[3][Id(i - 1, j)]);
}
for(int i = n - 1; ~i; i --){
if(s[i][j] == '#') continue;
ll u = Id(i, j);
nxt[1][u] = (wall[1][u] ? u : nxt[1][Id(i + 1, j)]);
}
}
BFS0();
for(int i = 0; i < n; i ++){
for(int j = 0; j < m; j ++){
ll u = Id(i, j), v;
for(int d = 0; d < 4; d ++){
v = nxt[d][u];
if(v != u && v != Id(i + dir[d].first, j + dir[d].second)) G[u].push_back({v, gin[u] + 1});
}
for(auto v : adj[u]){
G[u].push_back({v, 1});
}
}
}
cout << DIJ(src, snk) << '\n';
return 0;
}
// N.N_2004
// THIS IS THE PAYOFF
Compilation message (stderr)
portals.cpp:1:1: error: expected unqualified-id before '/' token 1 | /In the name of GOD | ^ In file included from /usr/include/c++/9/cmath:43, from /usr/include/x86_64-linux-gnu/c++/9/bits/stdc++.h:41, from portals.cpp:2: /usr/include/c++/9/ext/type_traits.h:162:35: error: 'bool __gnu_cxx::__is_null_pointer' redeclared as different kind of entity 162 | __is_null_pointer(std::nullptr_t) | ^ /usr/include/c++/9/ext/type_traits.h:157:5: note: previous declaration 'template<class _Type> bool __gnu_cxx::__is_null_pointer(_Type)' 157 | __is_null_pointer(_Type) | ^~~~~~~~~~~~~~~~~ /usr/include/c++/9/ext/type_traits.h:162:26: error: 'nullptr_t' is not a member of 'std' 162 | __is_null_pointer(std::nullptr_t) | ^~~~~~~~~ In file included from /usr/include/c++/9/bits/exception_ptr.h:40, from /usr/include/c++/9/exception:143, from /usr/include/c++/9/ios:39, from /usr/include/c++/9/istream:38, from /usr/include/c++/9/sstream:38, from /usr/include/c++/9/complex:45, from /usr/include/c++/9/ccomplex:39, from /usr/include/x86_64-linux-gnu/c++/9/bits/stdc++.h:54, from portals.cpp:2: /usr/include/c++/9/new:125:50: error: declaration of 'operator new' as non-function 125 | _GLIBCXX_NODISCARD void* operator new(std::size_t) _GLIBCXX_THROW (std::bad_alloc) | ^ /usr/include/c++/9/new:125:44: error: 'size_t' is not a member of 'std'; did you mean 'size_t'? 125 | _GLIBCXX_NODISCARD void* operator new(std::size_t) _GLIBCXX_THROW (std::bad_alloc) | ^~~~~~ In file included from /usr/include/stdlib.h:31, from /usr/include/c++/9/bits/std_abs.h:38, from /usr/include/c++/9/cmath:47, from /usr/include/x86_64-linux-gnu/c++/9/bits/stdc++.h:41, from portals.cpp:2: /usr/lib/gcc/x86_64-linux-gnu/9/include/stddef.h:209:23: note: 'size_t' declared here 209 | typedef __SIZE_TYPE__ size_t; | ^~~~~~ In file included from /usr/include/c++/9/bits/exception_ptr.h:40, from /usr/include/c++/9/exception:143, from /usr/include/c++/9/ios:39, from /usr/include/c++/9/istream:38, from /usr/include/c++/9/sstream:38, from /usr/include/c++/9/complex:45, from /usr/include/c++/9/ccomplex:39, from /usr/include/x86_64-linux-gnu/c++/9/bits/stdc++.h:54, from portals.cpp:2: /usr/include/c++/9/new:126:41: error: attributes after parenthesized initializer ignored [-fpermissive] 126 | __attribute__((__externally_visible__)); | ^ /usr/include/c++/9/new:127:52: error: declaration of 'operator new []' as non-function 127 | _GLIBCXX_NODISCARD void* operator new[](std::size_t) _GLIBCXX_THROW (std::bad_alloc) | ^ /usr/include/c++/9/new:127:46: error: 'size_t' is not a member of 'std'; did you mean 'size_t'? 127 | _GLIBCXX_NODISCARD void* operator new[](std::size_t) _GLIBCXX_THROW (std::bad_alloc) | ^~~~~~ In file included from /usr/include/stdlib.h:31, from /usr/include/c++/9/bits/std_abs.h:38, from /usr/include/c++/9/cmath:47, from /usr/include/x86_64-linux-gnu/c++/9/bits/stdc++.h:41, from portals.cpp:2: /usr/lib/gcc/x86_64-linux-gnu/9/include/stddef.h:209:23: note: 'size_t' declared here 209 | typedef __SIZE_TYPE__ size_t; | ^~~~~~ In file included from /usr/include/c++/9/bits/exception_ptr.h:40, from /usr/include/c++/9/exception:143, from /usr/include/c++/9/ios:39, from /usr/include/c++/9/istream:38, from /usr/include/c++/9/sstream:38, from /usr/include/c++/9/complex:45, from /usr/include/c++/9/ccomplex:39, from /usr/include/x86_64-linux-gnu/c++/9/bits/stdc++.h:54, from portals.cpp:2: /usr/include/c++/9/new:128:41: error: attributes after parenthesized initializer ignored [-fpermissive] 128 | __attribute__((__externally_visible__)); | ^ /usr/include/c++/9/new:134:34: error: 'std::size_t' has not been declared 134 | void operator delete(void*, std::size_t) _GLIBCXX_USE_NOEXCEPT | ^~~~~~ /usr/include/c++/9/new:136:36: error: 'std::size_t' has not been declared 136 | void operator delete[](void*, std::size_t) _GLIBCXX_USE_NOEXCEPT | ^~~~~~ /usr/include/c++/9/new:139:44: error: declaration of 'operator new' as non-function 139 | _GLIBCXX_NODISCARD void* operator new(std::size_t, const std::nothrow_t&) _GLIBCXX_USE_NOEXCEPT | ^~~~~~ /usr/include/c++/9/new:139:44: error: 'size_t' is not a member of 'std'; did you mean 'size_t'? In file included from /usr/include/stdlib.h:31, from /usr/include/c++/9/bits/std_abs.h:38, from /usr/include/c++/9/cmath:47, from /usr/include/x86_64-linux-gnu/c++/9/bits/stdc++.h:41, from portals.cpp:2: /usr/lib/gcc/x86_64-linux-gnu/9/include/stddef.h:209:23: note: 'size_t' declared here 209 | typedef __SIZE_TYPE__ size_t; | ^~~~~~ In file included from /usr/include/c++/9/bits/exception_ptr.h:40, from /usr/include/c++/9/exception:143, from /usr/include/c++/9/ios:39, from /usr/include/c++/9/istream:38, from /usr/include/c++/9/sstream:38, from /usr/include/c++/9/complex:45, from /usr/include/c++/9/ccomplex:39, from /usr/include/x86_64-linux-gnu/c++/9/bits/stdc++.h:54, from portals.cpp:2: /usr/include/c++/9/new:139:52: error: expected primary-expression before 'const' 139 | _GLIBCXX_NODISCARD void* operator new(std::size_t, const std::nothrow_t&) _GLIBCXX_USE_NOEXCEPT | ^~~~~ /usr/include/c++/9/new:141:46: error: declaration of 'operator new []' as non-function 141 | _GLIBCXX_NODISCARD void* operator new[](std::size_t, const std::nothrow_t&) _GLIBCXX_USE_NOEXCEPT | ^~~~~~ /usr/include/c++/9/new:141:46: error: 'size_t' is not a member of 'std'; did you mean 'size_t'? In file included from /usr/include/stdlib.h:31, from /usr/include/c++/9/bits/std_abs.h:38, from /usr/include/c++/9/cmath:47, from /usr/include/x86_64-linux-gnu/c++/9/bits/stdc++.h:41, from portals.cpp:2: /usr/lib/gcc/x86_64-linux-gnu/9/include/stddef.h:209:23: note: 'size_t' declared here 209 | typedef __SIZE_TYPE__ size_t; | ^~~~~~ In file included from /usr/include/c++/9/bits/exception_ptr.h:40, from /usr/include/c++/9/exception:143, from /usr/include/c++/9/ios:39, from /usr/include/c++/9/istream:38, from /usr/include/c++/9/sstream:38, from /usr/include/c++/9/complex:45, from /usr/include/c++/9/ccomplex:39, from /usr/include/x86_64-linux-gnu/c++/9/bits/stdc++.h:54, from portals.cpp:2: /usr/include/c++/9/new:141:54: error: expected primary-expression before 'const' 141 | _GLIBCXX_NODISCARD void* operator new[](std::size_t, const std::nothrow_t&) _GLIBCXX_USE_NOEXCEPT | ^~~~~ /usr/include/c++/9/new:173:51: error: declaration of 'operator new' as non-function 173 | _GLIBCXX_NODISCARD inline void* operator new(std::size_t, void* __p) _GLIBCXX_USE_NOEXCEPT | ^~~~~~ /usr/include/c++/9/new:173:51: error: 'size_t' is not a member of 'std'; did you mean 'size_t'? In file included from /usr/include/stdlib.h:31, from /usr/include/c++/9/bits/std_abs.h:38, from /usr/include/c++/9/cmath:47, from /usr/include/x86_64-linux-gnu/c++/9/bits/stdc++.h:41, from portals.cpp:2: /usr/lib/gcc/x86_64-linux-gnu/9/include/stddef.h:209:23: note: 'size_t' declared here 209 | typedef __SIZE_TYPE__ size_t; | ^~~~~~ In file included from /usr/include/c++/9/bits/exception_ptr.h:40, from /usr/include/c++/9/exception:143, from /usr/include/c++/9/ios:39, from /usr/include/c++/9/istream:38, from /usr/include/c++/9/sstream:38, from /usr/include/c++/9/complex:45, from /usr/include/c++/9/ccomplex:39, from /usr/include/x86_64-linux-gnu/c++/9/bits/stdc++.h:54, from portals.cpp:2: /usr/include/c++/9/new:173:59: error: expected primary-expression before 'void' 173 | _GLIBCXX_NODISCARD inline void* operator new(std::size_t, void* __p) _GLIBCXX_USE_NOEXCEPT | ^~~~ /usr/include/c++/9/new:175:53: error: declaration of 'operator new []' as non-function 175 | _GLIBCXX_NODISCARD inline void* operator new[](std::size_t, void* __p) _GLIBCXX_USE_NOEXCEPT | ^~~~~~ /usr/include/c++/9/new:175:53: error: 'size_t' is not a member of 'std'; did you mean 'size_t'? In file included from /usr/include/stdlib.h:31, from /usr/include/c++/9/bits/std_abs.h:38, from /usr/include/c++/9/cmath:47, from /usr/include/x86_64-linux-gnu/c++/9/bits/stdc++.h:41, from portals.cpp:2: /usr/lib/gcc/x86_64-linux-gnu/9/include/stddef.h:209:23: note: 'size_t' declared here 209 | typedef __SIZE_TYPE__ size_t; | ^~~~~~ In file included from /usr/include/c++/9/bits/exception_ptr.h:40, from /usr/include/c++/9/exception:143, from /usr/include/c++/9/ios:39, from /usr/include/c++/9/istream:38, from /usr/include/c++/9/sstream:38, from /usr/include/c++/9/complex:45, from /usr/include/c++/9/ccomplex:39, from /usr/include/x86_64-linux-gnu/c++/9/bits/stdc++.h:54, from portals.cpp:2: /usr/include/c++/9/new:175:61: error: expected primary-expression before 'void' 175 | _GLIBCXX_NODISCARD inline void* operator new[](std::size_t, void* __p) _GLIBCXX_USE_NOEXCEPT | ^~~~ In file included from /usr/include/c++/9/bits/move.h:55, from /usr/include/c++/9/bits/nested_exception.h:40, from /usr/include/c++/9/exception:144, from /usr/include/c++/9/ios:39, from /usr/include/c++/9/istream:38, from /usr/include/c++/9/sstream:38, from /usr/include/c++/9/complex:45, from /usr/include/c++/9/ccomplex:39, from /usr/include/x86_64-linux-gnu/c++/9/bits/stdc++.h:54, from portals.cpp:2: /usr/include/c++/9/type_traits:361:31: error: 'std::size_t' has not been declared 361 | template<typename _Tp, std::size_t _Size> | ^~~~~~ /usr/include/c++/9/type_traits:362:25: error: '_Size' was not declared in this scope 362 | struct is_array<_Tp[_Size]> | ^~~~~ /usr/include/c++/9/type_traits:362:31: error: template argument 1 is invalid 362 | struct is_array<_Tp[_Size]> | ^ /usr/include/c++/9/type_traits:560:42: error: 'nullptr_t' is not a member of 'std'; did you mean 'nullptr_t'? 560 | struct __is_null_pointer_helper<std::nullptr_t> | ^~~~~~~~~ In file included from /usr/include/c++/9/cstddef:50, from /usr/include/x86_64-linux-gnu/c++/9/bits/stdc++.h:45, from portals.cpp:2: /usr/lib/gcc/x86_64-linux-gnu/9/include/stddef.h:433:29: note: 'nullptr_t' declared here 433 | typedef decltype(nullptr) nullptr_t; | ^~~~~~~~~ In file included from /usr/include/c++/9/bits/move.h:55, from /usr/include/c++/9/bits/nested_exception.h:40, from /usr/include/c++/9/exception:144, from /usr/include/c++/9/ios:39, from /usr/include/c++/9/istream:38, from /usr/include/c++/9/sstream:38, from /usr/include/c++/9/complex:45, from /usr/include/c++/9/ccomplex:39, from /usr/include/x86_64-linux-gnu/c++/9/bits/stdc++.h:54, from portals.cpp:2: /usr/include/c++/9/type_traits:560:42: error: 'nullptr_t' is not a member of 'std'; did you mean 'nullptr_t'? 560 | struct __is_null_pointer_helper<std::nullptr_t> | ^~~~~~~~~ In file included from /usr/include/c++/9/cstddef:50, from /usr/include/x86_64-linux-gnu/c++/9/bits/stdc++.h:45, from portals.cpp:2: /usr/lib/gcc/x86_64-linux-gnu/9/include/stddef.h:433:29: note: 'nullptr_t' declared here 433 | typedef decltype(nullptr) nullptr_t; | ^~~~~~~~~ In file included from /usr/include/c++/9/bits/move.h:55, from /usr/include/c++/9/bits/nested_exception.h:40, from /usr/include/c++/9/exception:144, from /usr/include/c++/9/ios:39, from /usr/include/c++/9/istream:38, from /usr/include/c++/9/sstream:38, from /usr/include/c++/9/complex:45, from /usr/include/c++/9/ccomplex:39, from /usr/include/x86_64-linux-gnu/c++/9/bits/stdc++.h:54, from portals.cpp:2: /usr/include/c++/9/type_traits:560:51: error: template argument 1 is invalid 560 | struct __is_null_pointer_helper<std::nullptr_t> | ^ /usr/include/c++/9/type_traits:1253:37: error: 'size_t' is not a member of 'std'; did you mean 'size_t'? 1253 | : public integral_constant<std::size_t, alignof(_Tp)> { }; | ^~~~~~ In file included from /usr/include/stdlib.h:31, from /usr/include/c++/9/bits/std_abs.h:38, from /usr/include/c++/9/cmath:47, from /usr/include/x86_64-linux-gnu/c++/9/bits/stdc++.h:41, from portals.cpp:2: /usr/lib/gcc/x86_64-linux-gnu/9/include/stddef.h:209:23: note: 'size_t' declared here 209 | typedef __SIZE_TYPE__ size_t; | ^~~~~~ In file included from /usr/include/c++/9/bits/move.h:55, from /usr/include/c++/9/bits/nested_exception.h:40, from /usr/include/c++/9/exception:144, from /usr/include/c++/9/ios:39, from /usr/include/c++/9/istream:38, from /usr/include/c++/9/sstream:38, from /usr/include/c++/9/complex:45, from /usr/include/c++/9/ccomplex:39, from /usr/include/x86_64-linux-gnu/c++/9/bits/stdc++.h:54, from portals.cpp:2: /usr/include/c++/9/type_traits:1253:37: error: 'size_t' is not a member of 'std'; did you mean 'size_t'? 1253 | : public integral_constant<std::size_t, alignof(_Tp)> { }; | ^~~~~~ In file included from /usr/include/stdlib.h:31, from /usr/include/c++/9/bits/std_abs.h:38, from /usr/include/c++/9/cmath:47, from /usr/include/x86_64-linux-gnu/c++/9/bits/stdc++.h:41, from portals.cpp:2: /usr/lib/gcc/x86_64-linux-gnu/9/include/stddef.h:209:23: note: 'size_t' declared here 209 | typedef __SIZE_TYPE__ size_t; | ^~~~~~ In file included from /usr/include/c++/9/bits/move.h:55, from /usr/include/c++/9/bits/nested_exception.h:40, from /usr/include/c++/9/exception:144, from /usr/include/c++/9/ios:39, from /usr/include/c++/9/istream:38, from /usr/include/c++/9/sstream:38, from /usr/include/c++/9/complex:45, from /usr/include/c++/9/ccomplex:39, from /usr/include/x86_64-linux-gnu/c++/9/bits/stdc++.h:54, from portals.cpp:2: /usr/include/c++/9/type_traits:1253:57: error: template argument 1 is invalid 1253 | : public integral_constant<std::size_t, alignof(_Tp)> { }; | ^ /usr/include/c++/9/type_traits:1253:57: note: invalid template non-type parameter /usr/include/c++/9/type_traits:1258:37: error: 'size_t' is not a member of 'std'; did you mean 'size_t'? 1258 | : public integral_constant<std::size_t, 0> { }; | ^~~~~~ In file included from /usr/include/stdlib.h:31, from /usr/include/c++/9/bits/std_abs.h:38, from /usr/include/c++/9/cmath:47, from /usr/include/x86_64-linux-gnu/c++/9/bits/stdc++.h:41, from portals.cpp:2: /usr/lib/gcc/x86_64-linux-gnu/9/include/stddef.h:209:23: note: 'size_t' declared here 209 | typedef __SIZE_TYPE__ size_t; | ^~~~~~ In file included from /usr/include/c++/9/bits/move.h:55, from /usr/include/c++/9/bits/nested_exception.h:40, from /usr/include/c++/9/exception:144, from /usr/include/c++/9/ios:39, from /usr/include/c++/9/istream:38, from /usr/include/c++/9/sstream:38, from /usr/include/c++/9/complex:45, from /usr/include/c++/9/ccomplex:39, from /usr/include/x86_64-linux-gnu/c++/9/bits/stdc++.h:54, from portals.cpp:2: /usr/include/c++/9/type_traits:1258:37: error: 'size_t' is not a member of 'std'; did you mean 'size_t'? 1258 | : public integral_constant<std::size_t, 0> { }; | ^~~~~~ In file included from /usr/include/stdlib.h:31, from /usr/include/c++/9/bits/std_abs.h:38, from /usr/include/c++/9/cmath:47, from /usr/include/x86_64-linux-gnu/c++/9/bits/stdc++.h:41, from portals.cpp:2: /usr/lib/gcc/x86_64-linux-gnu/9/include/stddef.h:209:23: note: 'size_t' declared here 209 | typedef __SIZE_TYPE__ size_t; | ^~~~~~ In file i