제출 #244632

#제출 시각아이디문제언어결과실행 시간메모리
244632tqbfjotldPipes (CEOI15_pipes)C++14
0 / 100
76 ms65540 KiB
#include <vector> #include <cstdio> using namespace std; bool isBridge[100005]; int p[100005]; int sz[100005]; int depth[100005]; vector<int> adjl[100005]; int p2[100005]; int rt[100005]; void dfs(int node, int parent){ for (int x : adjl[node]){ if (x==parent) continue; depth[x] = depth[node]+1; rt[x] = rt[node]; dfs(x,node); if(p2[x]!=node){ isBridge[x] = isBridge[node]; p2[x] = node; } } } int root(int a){ return p[a]==a?a:p[a]=root(p[a]); } int func(int a, int b){ if (a==b) return a; if (depth[b]<depth[a]) swap(a,b); isBridge[b] = false; int t = func(a,p[b]); p[a] = t; p[b] = t; } int n,e; int main(){ printf("%d\n",sizeof(isBridge)+sizeof(p)+sizeof(sz)+sizeof(depth)+sizeof(adjl)+sizeof(p2)+sizeof(rt)); scanf("%d%d",&n,&e); for (int x = 0; x<n; x++){ isBridge[x] = false; p[x] = x; sz[x] = 1; depth[x] = 0; rt[x] = x; } for (int x = 0; x<e; x++){ int a,b; scanf("%d%d",&a,&b); if (rt[a]==rt[b]){ func(a,b); } else{ if (sz[root(b)]>sz[root(a)]) swap(a,b); sz[root(a)] += sz[root(b)]; adjl[b].push_back(a); adjl[a].push_back(b); depth[b] = depth[a]+1; p2[b] = a; p[b] = a; rt[b] = rt[a]; dfs(b,a); isBridge[b] = true; } } for (int x = 0; x<n; x++){ if (isBridge[x]){ printf("%d %d\n",x,p2[x]); } } }

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

pipes.cpp: In function 'int main()':
pipes.cpp:42:105: warning: format '%d' expects argument of type 'int', but argument 2 has type 'long unsigned int' [-Wformat=]
     printf("%d\n",sizeof(isBridge)+sizeof(p)+sizeof(sz)+sizeof(depth)+sizeof(adjl)+sizeof(p2)+sizeof(rt));
                                                                                                         ^
pipes.cpp: In function 'int func(int, int)':
pipes.cpp:37:1: warning: control reaches end of non-void function [-Wreturn-type]
 }
 ^
pipes.cpp: In function 'int main()':
pipes.cpp:43:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     scanf("%d%d",&n,&e);
     ~~~~~^~~~~~~~~~~~~~
pipes.cpp:53:14: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
         scanf("%d%d",&a,&b);
         ~~~~~^~~~~~~~~~~~~~
#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...