QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#501229 | #5153. Delft Distance | xixu | Compile Error | / | / | C++20 | 4.4kb | 2024-08-02 15:49:58 | 2024-08-02 15:49:58 |
Judging History
answer
#include<bits/stdc++.h>
using namespace std;
// #define int long long
typedef long long ll;
typedef pair<int , int> PII;
const int N = 1e7 + 10 , inf = 0x3f3f3f3f;
const double PI = 3.1415926535;
typedef pair<int, int> PII;
typedef pair<double , pair<int , int>> PL;
int n , m; // 点的数量
PII e[N];
int ne[N];
double w[N];
int idx; // 邻接表存储所有边
unordered_map<PII , int> h;
unordered_map<PII , double> dist;
unordered_map<PII , bool> st;
// double dist[N]; // 存储所有点到1号点的距离
// bool st[N]; // 存储每个点的最短距离是否已确定
void add(PII a , PII b , double c)
{
e[idx] = b;
w[idx] = c;
ne[idx] = h[a];
h[a] = idx ++;
}
// 求1号点到n号点的最短距离,如果不存在,则返回-1
double dijkstra()
{
// memset(dist, 0x3f, sizeof dist);
for(int i = 1; i <= 2 * n + 1; i ++)
{
for(int j = 1; j <= 2 * m + 1; j ++)
{
dist[{i , j}] = inf;
}
}
dist[{1 , 1}] = 0;
priority_queue<PL, vector<PL>, greater<PL>> heap;
heap.push({0, {1 , 1}}); // first存储距离,second存储节点编号
while (heap.size())
{
auto t = heap.top();
heap.pop();
// cout << t.second.first << ' ' << t.second.second << '\n';
PII ver = t.second;
double distance = t.first;
if (st[ver]) continue;
st[ver] = true;
for (int i = h[ver]; i != -1; i = ne[i])
{
PII j = e[i];
if (dist[j] > distance + w[i])
{
dist[j] = distance + w[i];
heap.push({dist[j], j});
}
}
}
return dist[{2 * n + 1 , 2 * m + 1}];
}
void solve()
{
cin >> n >> m;
for(int i = 1; i <= 2 * n + 1; i ++)
{
for(int j = 1; j <= 2 * m + 1; j ++)
{
h[{i , j}] = -1;
}
}
for(int i = 1; i < 2 * n; i += 2)
{
for(int j = 1; j < 2 * m; j += 2)
{
// cout << i << ' ' << j << '\n';
char c;
cin >> c;
if(c == 'X')
{
add({i , j} , {i , j + 2} , 10);
add({i , j + 2} , {i , j} , 10);
add({i , j} , {i + 2 , j} , 10);
add({i + 2 , j} , {i , j} , 10);
add({i , j + 2} , {i + 2 , j + 2} , 10);
add({i + 2 , j + 2} , {i , j + 2} , 10);
add({i + 2 , j} , {i + 2 , j + 2} , 10);
add({i + 2 , j + 2} , {i + 2 , j} , 10);
}
else
{
add({i ,j} , {i + 1 , j} , 5);
add({i + 1 , j} , {i , j} , 5);
add({i + 1 , j} , {i + 2 , j} , 5);
add({i + 2 , j} , {i + 1 , j} , 5);
add({i + 2 , j} , {i + 2 , j + 1} , 5);
add({i + 2 , j + 1} , {i + 2 , j} , 5);
add({i + 2 , j + 1} , {i + 2 , j + 2} , 5);
add({i + 2 , j + 2} , {i + 2 , j + 1} , 5);
add({i + 2 , j + 2} , {i + 1 , j + 2} , 5);
add({i + 1 , j + 2} , {i + 2 , j + 2} , 5);
add({i + 1 , j + 2} ,{i , j + 2} , 5);
add({i ,j + 2} , {i + 1 , j + 2} , 5);
add({i , j + 2} , {i , j + 1} , 5);
add({i , j + 1} , {i , j + 2} , 5);
add({i , j + 1} , {i , j} , 5);
add({i , j} , {i , j + 1} , 5);
add({i + 1 , j} , {i , j + 1} , 5 * PI / 2);
add({i , j + 1} , {i + 1 , j} , 5 * PI / 2);
// cout << 5 * PI / 2 << '\n';
add({i , j + 1} , {i + 1 , j + 2} , 5 * PI / 2);
add({i + 1 , j + 2} , {i , j + 1} , 5 * PI / 2);
add({i + 1 , j + 2} , {i + 2 , j + 1} , 5 * PI / 2);
add({i + 2 , j + 1} , {i + 1 , j + 2} , 5 * PI / 2);
add({i + 2 , j + 1} , {i + 1 , j} , 5 * PI / 2);
add({i + 1 , j} , {i + 2 , j + 1} , 5 * PI / 2);
}
}
}
cout << fixed << setprecision(12) << dijkstra() << '\n';
}
signed main()
{
cin.tie(0);
ios::sync_with_stdio(false);
int t = 1;
// cin >> t;
while(t --)
{
solve();
}
return 0;
}
Details
answer.code:20:26: error: use of deleted function ‘std::unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>::unordered_map() [with _Key = std::pair<int, int>; _Tp = int; _Hash = std::hash<std::pair<int, int> >; _Pred = std::equal_to<std::pair<int, int> >; _Alloc = std::allocator<std::pair<const std::pair<int, int>, int> >]’ 20 | unordered_map<PII , int> h; | ^ In file included from /usr/include/c++/13/unordered_map:41, from /usr/include/c++/13/functional:63, from /usr/include/x86_64-linux-gnu/c++/13/bits/stdc++.h:53, from answer.code:1: /usr/include/c++/13/bits/unordered_map.h:148:7: note: ‘std::unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>::unordered_map() [with _Key = std::pair<int, int>; _Tp = int; _Hash = std::hash<std::pair<int, int> >; _Pred = std::equal_to<std::pair<int, int> >; _Alloc = std::allocator<std::pair<const std::pair<int, int>, int> >]’ is implicitly deleted because the default definition would be ill-formed: 148 | unordered_map() = default; | ^~~~~~~~~~~~~ /usr/include/c++/13/bits/unordered_map.h:148:7: error: use of deleted function ‘std::_Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>::_Hashtable() [with _Key = std::pair<int, int>; _Value = std::pair<const std::pair<int, int>, int>; _Alloc = std::allocator<std::pair<const std::pair<int, int>, int> >; _ExtractKey = std::__detail::_Select1st; _Equal = std::equal_to<std::pair<int, int> >; _Hash = std::hash<std::pair<int, int> >; _RangeHash = std::__detail::_Mod_range_hashing; _Unused = std::__detail::_Default_ranged_hash; _RehashPolicy = std::__detail::_Prime_rehash_policy; _Traits = std::__detail::_Hashtable_traits<true, false, true>]’ In file included from /usr/include/c++/13/bits/unordered_map.h:33: /usr/include/c++/13/bits/hashtable.h:530:7: note: ‘std::_Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>::_Hashtable() [with _Key = std::pair<int, int>; _Value = std::pair<const std::pair<int, int>, int>; _Alloc = std::allocator<std::pair<const std::pair<int, int>, int> >; _ExtractKey = std::__detail::_Select1st; _Equal = std::equal_to<std::pair<int, int> >; _Hash = std::hash<std::pair<int, int> >; _RangeHash = std::__detail::_Mod_range_hashing; _Unused = std::__detail::_Default_ranged_hash; _RehashPolicy = std::__detail::_Prime_rehash_policy; _Traits = std::__detail::_Hashtable_traits<true, false, true>]’ is implicitly deleted because the default definition would be ill-formed: 530 | _Hashtable() = default; | ^~~~~~~~~~ /usr/include/c++/13/bits/hashtable.h:530:7: error: use of deleted function ‘std::__detail::_Hashtable_base<_Key, _Value, _ExtractKey, _Equal, _Hash, _RangeHash, _Unused, _Traits>::_Hashtable_base() [with _Key = std::pair<int, int>; _Value = std::pair<const std::pair<int, int>, int>; _ExtractKey = std::__detail::_Select1st; _Equal = std::equal_to<std::pair<int, int> >; _Hash = std::hash<std::pair<int, int> >; _RangeHash = std::__detail::_Mod_range_hashing; _Unused = std::__detail::_Default_ranged_hash; _Traits = std::__detail::_Hashtable_traits<true, false, true>]’ In file included from /usr/include/c++/13/bits/hashtable.h:35: /usr/include/c++/13/bits/hashtable_policy.h:1710:7: note: ‘std::__detail::_Hashtable_base<_Key, _Value, _ExtractKey, _Equal, _Hash, _RangeHash, _Unused, _Traits>::_Hashtable_base() [with _Key = std::pair<int, int>; _Value = std::pair<const std::pair<int, int>, int>; _ExtractKey = std::__detail::_Select1st; _Equal = std::equal_to<std::pair<int, int> >; _Hash = std::hash<std::pair<int, int> >; _RangeHash = std::__detail::_Mod_range_hashing; _Unused = std::__detail::_Default_ranged_hash; _Traits = std::__detail::_Hashtable_traits<true, false, true>]’ is implicitly deleted because the default definition would be ill-formed: 1710 | _Hashtable_base() = default; | ^~~~~~~~~~~~~~~ /usr/include/c++/13/bits/hashtable_policy.h:1710:7: error: use of deleted function ‘std::__detail::_Hash_code_base<_Key, _Value, _ExtractKey, _Hash, _RangeHash, _Unused, __cache_hash_code>::_Hash_code_base() [with _Key = std::pair<int, int>; _Value = std::pair<const std::pair<int, int>, int>; _ExtractKey = std::__detail::_Select1st; _Hash = std::hash<std::pair<int, int> >; _RangeHash = std::__detail::_Mod_range_hashing; _Unused = std::__detail::_Default_ranged_hash; bool __cache_hash_code = true]’ /usr/include/c++/13/bits/hashtable_policy.h: In instantiation of ‘std::__detail::_Hashtable_ebo_helper<_Nm, _Tp, true>::_Hashtable_ebo_helper() [with int _Nm = 1; _Tp = std::hash<std::pair<int, int> >]’: /usr/include/c++/13/bits/hashtable_policy.h:1297:7: required from here /usr/include/c++/13/bits/hashtable_policy.h:1214:49: error: use of deleted function ‘std::hash<std::pair<int, int> >::hash()’ 1214 | _Hashtable_ebo_helper() noexcept(noexcept(_Tp())) : _Tp() { } | ...