Submission #333707

#TimeUsernameProblemLanguageResultExecution timeMemory
333707dooweyPraktični (COCI18_prakticni)C++14
130 / 130
136 ms18284 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; typedef pair<int, int> pii; #define fi first #define se second #define mp make_pair #define fastIO ios::sync_with_stdio(false);cin.tie(0);cout.tie(0); const int N = (int)1e5 + 10; const int LOG = 31; ll vl[N]; vector<pii> T[N]; ll xr[N]; bool vis[N]; int dep[N]; vector<pii> xar; int xorval; void dfs(int u, int pp){ vis[u]=true; for(auto x : T[u]){ if(vis[x.fi]){ if(dep[u] - dep[x.fi] >= 2){ xorval = (xr[u]^xr[x.fi]^vl[x.se]); if(xorval != 0) xar.push_back(mp(x.se, xorval)); } } else{ dep[x.fi] = dep[u]+1; xr[x.fi] = xr[u]^vl[x.se]; dfs(x.fi, u); } } } int main(){ fastIO; //freopen("in.txt", "r", stdin); int n, m; cin >> n >> m; int u, v; for(int i = 1; i <= m ; i ++ ){ cin >> u >> v >> vl[i]; T[u].push_back(mp(v,i)); T[v].push_back(mp(u,i)); } for(int i = 1; i <= n; i ++ ){ if(!vis[i]){ dfs(i,-1); } } vector<int> nums; vector<vector<int>> sol; int idx = -1; int cur; for(int i = 0 ; i < LOG; i ++ ){ idx = -1; for(int j = 0 ; j < xar.size(); j ++ ){ if((xar[j].se & (1 << i))) idx = j; } if(idx == -1) continue; cur = xar[idx].se; nums.push_back(cur); sol.push_back({}); for(int j = 0 ; j < xar.size(); j ++ ){ if((xar[j].se & (1 << i))){ xar[j].se ^= cur; sol.back().push_back(xar[j].fi); } } } cout << nums.size() << "\n"; for(int i = 0 ;i < nums.size(); i ++ ){ cout << nums[i] << " "; cout << sol[i].size() << " "; for(auto x : sol[i]) cout << x << " "; cout << "\n"; } return 0; }

Compilation message (stderr)

parkticni.cpp: In function 'int main()':
parkticni.cpp:67:27: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<int, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   67 |         for(int j = 0 ; j < xar.size(); j ++ ){
      |                         ~~^~~~~~~~~~~~
parkticni.cpp:75:27: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<int, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   75 |         for(int j = 0 ; j < xar.size(); j ++ ){
      |                         ~~^~~~~~~~~~~~
parkticni.cpp:83:23: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   83 |     for(int i = 0 ;i  < nums.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...
#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...