Submission #244506

#TimeUsernameProblemLanguageResultExecution timeMemory
244506dantoh000Pipes (CEOI15_pipes)C++14
10 / 100
5101 ms65540 KiB
#include <bits/stdc++.h>
using namespace std;
const int mod = 1000000007;
typedef pair<int,int> ii;
int n,m;
unordered_set<int> bad;
int num[100005];
int p[100005];
int low[100005];
int ct = 1;
int k[100005];
unordered_set<int> G;
int hsh(int u, int v){
    return (k[u]+k[v])%mod;
}
void dfs(int u){
    low[u] = num[u] = ct++;
    for (int v = 1; v <= n; v++){
        if (G.find(hsh(u,v)) != G.end()){
            if (num[v] == 0){
                p[v] = u;
                dfs(v);
                if (low[v] > num[u]){
                    if (bad.find(hsh(u,v)) == bad.end()){
                        printf("%d %d\n",u,v);
                    }
                }
                low[u] = min(low[u],low[v]);
            }
            else if (v != p[u]){
                low[u] = min(low[u],num[v]);
            }
        }
    }
}
int main(){
    scanf("%d%d",&n,&m);
    k[0] = 1;
    for (int i = 1; i <= n; i++){
        k[i] = (k[i-1]*3)%1000000007;
    }
    for (int i = 0; i < m; i++){
        int u,v;
        scanf("%d%d",&u,&v);
        int K = hsh(u,v);
        if (G.find(K) != G.end()) bad.insert(K);
        else G.insert(K);
    }
    for (int i = 1; i <= n; i++){
        if (num[i] == 0){
            dfs(i);
        }
    }
}

Compilation message (stderr)

pipes.cpp: In function 'int main()':
pipes.cpp:37:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     scanf("%d%d",&n,&m);
     ~~~~~^~~~~~~~~~~~~~
pipes.cpp:44:14: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
         scanf("%d%d",&u,&v);
         ~~~~~^~~~~~~~~~~~~~
#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...