제출 #333692

#제출 시각아이디문제언어결과실행 시간메모리
333692dooweyPraktični (COCI18_prakticni)C++14
0 / 130
120 ms16488 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; 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){ xar.push_back(mp(x.se, (xr[u]^xr[x.fi]^vl[x.se]))); } } 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); } } int idx; vector<vector<int>> soln; vector<int> ss; for(int b = 0; b < LOG; b ++ ){ idx = -1; for(int i = 0 ; i < xar.size(); i ++ ){ if((xar[i].se & (1 << b))){ idx = i; } } if(idx != -1){ ss.push_back(xar[idx].se); soln.push_back({}); int vv = xar[idx].se; for(auto &q : xar){ if((q.se & (1 << b))){ q.se ^= vv; soln.back().push_back(xar[idx].fi); } } } } cout << soln.size() << "\n"; for(int i = 0 ; i < ss.size(); i ++ ){ cout << ss[i] << " "; cout << soln[i].size() << " "; for(auto x : soln[i]) cout << x << " "; cout << "\n"; } return 0; }

컴파일 시 표준 에러 (stderr) 메시지

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