제출 #639591

#제출 시각아이디문제언어결과실행 시간메모리
639591PietraMonthly railway pass (LMIO18_menesinis_bilietas)C++17
100 / 100
1097 ms96724 KiB
// 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" ;

}

컴파일 시 표준 에러 (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 timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...