제출 #199833

#제출 시각아이디문제언어결과실행 시간메모리
199833mohammedehab2002Praktični (COCI18_prakticni)C++11
130 / 130
172 ms18936 KiB
#include <bits/stdc++.h> using namespace std; bool vis[100005]; int a[100005],b[100005],c[100005],cum[100005],bas[30],ori[30],mask[30]; vector<pair<int,int> > v[100005]; vector<int> ans[100005]; void dfs(int node) { vis[node]=1; for (auto u:v[node]) { if (!vis[u.first]) { cum[u.first]=(cum[node]^u.second); dfs(u.first); } } } int add(int a) { int tmp=a,p=-1; for (int i=29;i>=0;i--) { if (tmp&(1<<i)) tmp^=bas[i]; if (p==-1 && tmp&(1<<i)) p=i; } if (p==-1) return 0; bas[p]=tmp; ori[p]=a; for (int i=29;i>=0;i--) { if (p!=i && a&(1<<i)) { a^=bas[i]; mask[p]^=mask[i]; } } mask[p]^=(1<<p); return 1; } int get(int a) { int ret=0; for (int i=29;i>=0;i--) { if (a&(1<<i)) { a^=bas[i]; ret^=mask[i]; } } return ret; } int main() { int n,m,cnt=0; scanf("%d%d",&n,&m); for (int i=0;i<m;i++) { scanf("%d%d%d",&a[i],&b[i],&c[i]); v[a[i]].push_back({b[i],c[i]}); v[b[i]].push_back({a[i],c[i]}); } dfs(1); for (int i=0;i<m;i++) cnt+=add(cum[a[i]]^cum[b[i]]^c[i]); for (int i=0;i<m;i++) { int cur=get(cum[a[i]]^cum[b[i]]^c[i]); for (int j=0;j<30;j++) { if (cur&(1<<j)) ans[j].push_back(i+1); } } printf("%d\n",cnt); for (int i=0;i<30;i++) { if (bas[i]) { printf("%d %d",ori[i],ans[i].size()); for (int j:ans[i]) printf(" %d",j); printf("\n"); } } }

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

parkticni.cpp: In function 'int main()':
parkticni.cpp:84:39: warning: format '%d' expects argument of type 'int', but argument 3 has type 'std::vector<int>::size_type {aka long unsigned int}' [-Wformat=]
    printf("%d %d",ori[i],ans[i].size());
                          ~~~~~~~~~~~~~^
parkticni.cpp:60:7: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  scanf("%d%d",&n,&m);
  ~~~~~^~~~~~~~~~~~~~
parkticni.cpp:63:8: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   scanf("%d%d%d",&a[i],&b[i],&c[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...