Submission #825862

#TimeUsernameProblemLanguageResultExecution timeMemory
825862AlphaMale06Monthly railway pass (LMIO18_menesinis_bilietas)C++14
10 / 100
437 ms262144 KiB
#include <bits/stdc++.h> using namespace std; #define F first #define S second #define mp make_pair #define pb push_back const int N = 5000005; int p[N]; int sz[N]; set<int> reps; set<pair<int, int>, less<pair<int, int>>> adj[N]; vector<pair<int, int>> paid; void make(int v){p[v]=v; sz[v]=1;} int rep(int v){ if(p[v]==v)return v; return p[v]=rep(p[v]); } void unite(int v, int u){ v=rep(v); u=rep(u); if(u==v)return; if(sz[u]>sz[v]){ swap(u, v); } p[v]=u; sz[u]+=sz[v]; reps.erase(reps.find(v)); } int main() { ios_base::sync_with_stdio(0); cin.tie(0); int n, m; cin >> n >> m; for(int i=1; i<=n; i++){ make(i); reps.insert(i); } for(int i=0; i< m; i++){ int x, y; char a; cin >> x >> y >> a; if(a=='T'){ unite(x, y); } else paid.pb(mp(x, y)); } for(int i=0; i< paid.size(); i++){ int x=paid[i].F; int y=paid[i].S; x=rep(x); y=rep(y); int mn=min(x, y); int mx=max(x, y); adj[x].insert(mp(mn, mx)); adj[y].insert(mp(mn, mx)); } int ans=0; for(auto it = reps.begin(); it!=reps.end(); it++){ int node=*it; if(adj[node].size()==reps.size()-1){ ans+=sz[node]; } } cout << ans << '\n'; }

Compilation message (stderr)

menesinis_bilietas.cpp: In function 'int main()':
menesinis_bilietas.cpp:57:19: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<int, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   57 |     for(int i=0; i< paid.size(); 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...