This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
// qr ficar na cidade que torna mais barato - ele n paga metro
// mas paga trem
// quais cidades ele teria q ir de onibus visitar?
// pode pegar no max um onibus
// resume as componentes q tem metro
// trata como um grafo com essas comps (salvando o size)
// e as linhas de onibus p conectar
// considera apenas os caras q tem ligação pra tds comps como resp
#include<bits/stdc++.h>
using namespace std ;
const int maxn = 5e5 + 5 ;
int n, m, vis[maxn], sz[maxn], comp[maxn], ct ;
vector<pair<int,int>> bus ;
vector<int> grafo[maxn], tree[maxn] ;
map<pair<int,int>, int> mp ;
void dfs(int v, int p){
vis[v] = 1, comp[v] = ct ;
sz[ct]++ ;
for(auto a : grafo[v]){
if(vis[a] || a == p) continue ;
dfs(a, v) ;
}
}
int main(){
cin >> n >> m ;
for(int i = 1 ; i <= m ; i++){
int a, b ; char t ; cin >> a >> b >> t ;
if(t == 'T') grafo[a].push_back(b), grafo[b].push_back(a) ;
else bus.push_back({a, b}) ;
}
for(int i = 1 ; i <= n ; i++){
if(!vis[i]){
ct++ ;
dfs(i, i) ;
}
}
for(auto a : bus){
int x = a.first, y = a.second ;
if(comp[x] != comp[y] && mp.find({comp[x], comp[y]}) == mp.end()){
mp[{comp[x], comp[y]}] = 1, mp[{comp[y], comp[x]}] = 1 ;
tree[comp[x]].push_back(comp[y]), tree[comp[y]].push_back(comp[x]) ;
}
}
int ans = 0 ;
for(int i = 1 ; i <= ct ; i++){
// cout << grafo[i].size() << "\n" ;
if(tree[i].size() >= ct - 1) ans += sz[i] ;
}
cout << ans << "\n" ;
}
Compilation message (stderr)
menesinis_bilietas.cpp: In function 'int main()':
menesinis_bilietas.cpp:57:31: warning: comparison of integer expressions of different signedness: 'std::vector<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
57 | if(tree[i].size() >= ct - 1) ans += sz[i] ;
| ~~~~~~~~~~~~~~~^~~~~~~~~
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |