Pagini recente » Cod sursa (job #3230832) | Cod sursa (job #1236211) | Cod sursa (job #678286) | Cod sursa (job #2941687) | Cod sursa (job #1051671)
#include <cstdio>
#include <vector>
#include <bitset>
#include <stack>
using namespace std;
const int NMAX = 45003;
vector <int> G[NMAX];
bitset <NMAX> viz;
stack <int> S;
int N, min_depth[NMAX], depth[NMAX];
void DFS_tree (const int &node) {
viz[node] = 1;
for (vector <int> :: iterator i = G[node].begin (); i != G[node].end (); ++i)
if (!viz[*i]) {
depth[*i] = min_depth[*i] = depth[node] + 1;
S.push (*i);
DFS_tree (*i);
min_depth[node] = min (min_depth[*i], min_depth[node]);
if (min_depth[*i] == depth[node])
}
else
min_depth[node] = min (min_depth[node], depth[*i]);
}
int main () {
freopen ("santa.in", "r", stdin);
freopen ("santa.out", "w", stdout);
int M, i, a, b, _start, start, dest;
scanf ("%d%d", &N, &M);
for (i = 1; i <= M; ++i) {
scanf ("%d%d", &a, &b);
G[a].push_back (b);
G[b].push_back (a);
}
DFS_tree (1);
}