| Task: | Connect cities |
| Sender: | aalto26bh_034 |
| Submission time: | 2026-09-06 21:42:38 +0300 |
| Language: | C++ (C++23) |
| Status: | COMPILE ERROR |
Compiler report
In file included from /usr/include/c++/13/bits/hashtable.h:35,
from /usr/include/c++/13/bits/unordered_map.h:33,
from /usr/include/c++/13/unordered_map:41,
from input/code.cpp:6:
/usr/include/c++/13/bits/hashtable_policy.h: In instantiation of 'void std::__detail::_Insert_base<_Key, _Value, _Alloc, _ExtractKey, _Equal, _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>::_M_insert_range(_InputIterator, _InputIterator, const _NodeGetter&, std::true_type) [with _InputIterator = int; _NodeGetter = std::__detail::_AllocNode<std::allocator<std::__detail::_Hash_node<std::pair<const int, int>, false> > >; _Key = int; _Value = std::pair<const int, int>; _Alloc = std::allocator<std::pair<const int, int> >; _ExtractKey = std::__detail::_Select1st; _Equal = std::equal_to<int>; _Hash = std::hash<int>; _RangeHash = std::__detail::_Mod_range_hashing; _Unused = std::__detail::_Default_ranged_hash; _RehashPolicy = std::__detail::_Prime_rehash_policy;...Code
#include <string>
#include <iostream>
#include <vector>
#include <utility>
#include <algorithm>
#include <unordered_map>
#include <unordered_set>
using namespace std;
int main()
{
int n_cities;
int n_roads;
cin >> n_cities >> n_roads;
unordered_map<int, unordered_set<int>> city_map;
unordered_map<int, int> seen_cities;
int road1, road2;
for(int i = 0; i < n_roads; i++)
{
bool in = false;
int temp_key;
cin >> road1 >> road2;
for(auto & [key, val] : city_map)
{
if(seen_cities.count(road1) && seen_cities.count(road2)) break;
if(val.count(seen_cities[road1]))
{
temp_key = key;
val.insert(road1);
val.insert(road2);
if(!in)
{
in = true;
if(!(seen_cities.find(road1) != seen_cities.end() && seen_cities.find(road2) != seen_cities.end())) break;
}
else
{
city_map[temp_key].merge(val);
city_map.erase(key);
break;
}
}
else if(val.count(seen_cities[road2]))
{
temp_key = key;
val.insert(road1);
val.insert(road2);
if(!in)
{
in = true;
if(!(seen_cities.find(road1) != seen_cities.end() && seen_cities.find(road2) != seen_cities.end())) break;
}
else
{
city_map[temp_key].merge(val);
city_map.erase(key);
break;
}
}
}
if(!in)
{
unordered_set<int> temp = {road1, road2};
city_map[road1] = temp;
temp_key = road1;
}
seen_cities.insert(road1, temp_key);
seen_cities.insert(road2, temp_key);
}
for(int i = 1; i <= n_cities; i++)
{
if(!seen_cities.count(i))
{
city_map[i] = {i};
}
}
printf("%ld\n", city_map.size() - 1);
unordered_map<int, unordered_set<int>>::iterator it1;
unordered_map<int, unordered_set<int>>::iterator it2 = city_map.begin();
it2++;
for(it1 = city_map.begin(); it2 != city_map.end(); ++it1, ++it2)
{
printf("%d %d\n", *(it1->second.begin()), *(it2->second.begin()));
}
} 