Submission #256044

#TimeUsernameProblemLanguageResultExecution timeMemory
256044aloo123Monthly railway pass (LMIO18_menesinis_bilietas)C++14
100 / 100
736 ms92624 KiB
#include <algorithm> #include <bitset> #include <cassert> #include <chrono> #include <complex> #include <cstdio> #include <cstdlib> #include <cstring> #include <ctime> #include <deque> #include <functional> #include <iomanip> #include <iostream> #include <iterator> #include <limits> #include <list> #include <map> #include <numeric> #include <queue> #include <random> #include <ratio> #include <set> #include <sstream> #include <stack> #include <string> #include <unordered_map> #include <unordered_set> #include <utility> #include <vector> #include <climits> #define ll long long #define ld long double #define mp make_pair #define pb push_back #define in insert #define vll vector<ll> #define endl "\n" #define pll pair<ll,ll> #define f first #define s second #define FOR(i,a,b) for(int i=(a),_b=(b); i<=_b; i++) #define int ll #define sz(x) (ll)x.size() #define all(x) (x.begin(),x.end()) using namespace std; const ll INF = 1e12; const ll N =(5e5+5); // TODO : change value as per problem const ll MOD = 1e9+7; vector<int> adj[N]; set<int>adj2[N]; vector<pair<int,int>> bus; int col[N]; int nodes[N]; int gg; void dfs(int u,int c){ col[u] = c; gg++; // cout << u << " "; for(auto v:adj[u]){ if(col[v] == 0){ dfs(v,c); } } } void solve(){ int n,m; cin >> n >> m; for(int i =1;i<=m;i++){ int u,v; char ch; cin >> u >> v >> ch; if(ch == 'A') { bus.pb({u,v}); } else{ adj[u].pb(v); adj[v].pb(u); } } int cur = 0; for(int i =1;i<=n;i++){ if(col[i] == 0){ gg = 0; cur++; dfs(i,cur); nodes[cur] = gg; // cout << endl; } } // for(int i =1;i<=n;i++) cout << col[i] << " ";cout << endl; for(int i =0;i<bus.size();i++){ int u = bus[i].f,v = bus[i].s; if(col[u] == col[v]) continue; adj2[col[u]].in(col[v]); adj2[col[v]].in(col[u]); } int ans = 0; for(int i =1;i<=cur;i++){ int s = adj2[i].size(); // cout << "Colour : " << i << " -> "; // for(auto j:adj2[i]) cout << j << " "; // cout << endl; if(s == (cur-1)) { // cout << "YAY\n"; // cout << i << endl; ans += nodes[i]; } } cout << ans << endl; } signed main(){ ios_base::sync_with_stdio(0); cin.tie(NULL); // freopen(".in","r",stdin);freopen(".out","w",stdout); ll tt=1; // cin >> tt; while(tt--){ solve(); } }

Compilation message (stderr)

menesinis_bilietas.cpp: In function 'void solve()':
menesinis_bilietas.cpp:93:16: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for(int i =0;i<bus.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...