anonbin
aaa
Anon
046f40
(1)
12/04/20
3:01 pm EST
info
|
raw
|
download
dl
|
clone
new
paste
|
recent
|
about
#include <iostream> #include <map> #include <string> #include <vector> #include <unordered_map> #pragma once #define big 2147483647 #define DEBUG int main(void) { std::cin.tie(0); std::cout.tie(0); std::ios_base::sync_with_stdio(false); int iter; std::cin>>iter; while(iter-->0) { int n; std::cin>>n; std::unordered_map<std::string, std::vector<std::pair<std::string,long long>>> cities; std::unordered_map<std::string, int> rlookup; std::vector<std::string> lookup; for(int i=0;i<n;i++) { std::string temp; std::cin>>temp; rlookup[temp] = i; lookup.push_back(temp); } for(int i=0;i<n;i++) for(int j=0;j<n;j++) cities[lookup[i]].push_back({lookup[j],big}); for(auto i:lookup) cities[i][rlookup[i]].second = 0; int p; std::cin>>p; for(int i=0;i<p;i++) { std::string a; std::string b; int c; std::cin>>a>>b>>c; cities[a][rlookup[b]] = {b,c}; cities[b][rlookup[a]] = {a,c}; } for(auto i:lookup) for(auto j:lookup) for(auto k:lookup) if(cities[i][rlookup[j]].second > cities[i][rlookup[k]].second + cities[k][rlookup[j]].second) cities[i][rlookup[j]].second = cities[i][rlookup[k]].second + cities[k][rlookup[j]].second; std::cout<<'\t'; for(auto i:lookup) std::cout<<i<<" "; std::cout<<'\n'; for(auto i:lookup) { std::cout<<i<<" "; for(auto j:cities[i]) std::cout<<j.second<<" "; std::cout<<'\n'; } } return 0; }