Pagini recente » Cod sursa (job #2084337) | Cod sursa (job #3349301) | Cod sursa (job #3036902) | Cod sursa (job #3336989) | Cod sursa (job #3352113)
#include <bits/stdc++.h>
#define in fin
#define out fout
using namespace std;
ifstream fin ("biconex.in");
ofstream fout ("biconex.out");
int n, m, a, b, cnt, cntroot;
vector <int> g[100005];
int d[100005], dp[100005];
bool viz[100005], viz1[100005], art[100005];
void dfs(int nod){
viz[nod] = 1;
viz1[nod] = 1;
dp[nod] = INT_MAX;
for(int i = 0; i < g[nod].size(); i++){
if(viz1[g[nod][i]]){
dp[nod] = min(dp[nod], d[g[nod][i]]);
}
else if(!viz[g[nod][i]]){
d[g[nod][i]] = d[nod] + 1;
dfs(g[nod][i]);
if(nod != 1 && dp[g[nod][i]] >= d[nod]){
art[nod] = 1;
cnt++;
}
dp[nod] = min(dp[nod], dp[g[nod][i]]);
}
else if(nod == 1){
cntroot--;
}
}
viz1[nod] = 0;
}
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
in >> n >> m;
for(int i = 1; i <= m; i++){
in >> a >> b;
g[a].push_back(b);
g[b].push_back(a);
}
cntroot = g[1].size();
d[1] = 1;
dfs(1);
if(cntroot > 1){
art[1] = 1;
}
out << cntroot + cnt;
return 0;
}