제출 #669019

#제출 시각아이디문제언어결과실행 시간메모리
669019radinr85Pipes (CEOI15_pipes)C++14
10 / 100
925 ms25292 KiB
//radinr85
#include <bits/stdc++.h>

using namespace std;

typedef long long ll;
typedef deque<int> dq;
typedef long double ld;
typedef pair<int , int> pii;
typedef priority_queue<int> pq;

const int maxn = 3e6;
const ll mod = 1e9+7;

#define F first
#define S second
#define endl "\n"
#define pb push_back
#define ms(x , y) memset(x , y , sizeof x)
ll pw(ll a, ll b, ll md = mod){ll res = 1;while(b){if(b&1){res=(a*res)%md;}a=(a*a)%md;b>>=1;}return(res);}

const int N = 1e5 + 1;
vector<int> ver[N];
int par[N][2];
bool mark[N];
int cnt[N];
int n , m;

int get_par(int u , int x) {
    return par[u][x] == u ? u : par[u][x] = get_par(par[u][x] , x);
}
bool merge(int u , int v , int x) {
    u = get_par(u , x);
    v = get_par(v , x);

    if(u == v)
        return false;
    
    par[u][x] = v;

    return true;
}
int DFS(int u) {
    mark[u] = true;

    for(auto v : ver[u]) {
        if(!mark[v]) {
            par[v][0] = u;
            par[v][1] = par[u][1] + 1;
            cnt[u] += DFS(v);
        }
        else if(par[u][1] - par[v][1] > 1) {
            cnt[u] ++;
            cnt[v] --;
        }
    }
    if(cnt[u] == 0 && par[u][0] != 0)
        cout << u << " " << par[u][0] << endl;
    
    return cnt[u];
}

int main() {
	cin.tie(0)->sync_with_stdio(0);
	
    cin >> n >> m;
    for(int i = 1 ; i <= n ; i ++)
        par[i][0] = i , par[i][1] = i;
    for(int i = 0 ; i < m ; i ++) {
        int u , v;
        cin >> u >> v;

        if(merge(u , v , 0)) {
            ver[u].pb(v);
            ver[v].pb(u);
        }
        else if(merge(u , v , 1)) {
            ver[u].pb(v);
            ver[v].pb(u);
        }
    }
    ms(par , 0);
    for(int i = 1 ; i <= n ; i ++)
        if(!mark[i])
            DFS(i);

	return 0;
}

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

pipes.cpp: In function 'int main()':
pipes.cpp:83:5: warning: this 'for' clause does not guard... [-Wmisleading-indentation]
   83 |     for(int i = 1 ; i <= n ; i ++)
      |     ^~~
pipes.cpp:87:2: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'for'
   87 |  return 0;
      |  ^~~~~~
#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...