제출 #669296

#제출 시각아이디문제언어결과실행 시간메모리
669296manizarePipes (CEOI15_pipes)C++17
100 / 100
1212 ms15588 KiB
#include <bits/stdc++.h> #define all(a) a.begin(),a.end() #define pb push_back using namespace std ; const int maxn = 1e5+100 , maxq =2e5+10 , inf = 2e17 + 100 , mod = 1e9 + 7 ; vector <pair <int , int > >G[maxn] ; int par[maxn] , par2[maxn] , p[maxn] , dp[maxn] , dis[maxn] ;bool mark[maxn] , j[maxq]; int find(int v){ if(par[v] == v)return v; return par[v] = find(par[v]); } int find2(int v){ if(par2[v] == v)return v; return par2[v] = find2(par2[v]) ; } void dfs(int v){ mark[v] = 1; for(int i = 0 ; i < G[v].size() ; i++){ int u = G[v][i].first , o = G[v][i].second; ; if(mark[u] == 1){ if(j[o] == 0 && dis[u] < (dis[v])){ dp[v] ++ ; dp[u]--; } continue ; } dis[u] = dis[v] + 1; p[u] = v; j[o] = 1; dfs(u); dp[v] += dp[u] ; } } signed main(){ ios::sync_with_stdio(0);cin.tie(0); cout.tie(0); int n , m ; cin >> n >> m ; for(int i= 1 ; i <= n ; i++){ par[i] = i ; par2[i] = i ; } int c = 1; for(int i =1 ; i <= m ; i++){ int v , u ; cin >> v >> u ; int v1 = find(v) , u1 = find(u); if(v1 != u1){ G[v].pb({u , c}) ; G[u].pb({v , c});c++; par[v1] = u1 ; }else if(find2(v) != find2(u)){ par2[find2(v)] = find2(u); G[v].pb({u,c}) ; G[u].pb({v,c});c++; } } for(int i = 1; i <= n ; i++){ if(mark[i] == 0)dfs(i); } for(int i = 1; i <= n ; i++){ if(dp[i] == 0 && p[i] != 0){ cout << i << " " << p[i] << "\n"; } } }

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

pipes.cpp:5:54: warning: overflow in conversion from 'double' to 'int' changes value from '2.000000000000001e+17' to '2147483647' [-Woverflow]
    5 | const int maxn = 1e5+100 , maxq =2e5+10 , inf = 2e17 + 100 , mod = 1e9 + 7 ;
      |                                                 ~~~~~^~~~~
pipes.cpp: In function 'void dfs(int)':
pipes.cpp:19:20: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<int, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   19 |  for(int i = 0 ; i < G[v].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...