#include<iostream>
using namespace std;
int bridge[N][2];
int col[N],low[N],dep[N],iscut[N],nb;
int dfs(int u,int fa,int depth)
{
    col[u]
=1;
    dep[u]
=low[u]=depth;
    
int tol=0;
    
int tofa=0;//判断u,v之间是否有两条以上边
    int i,v;
    
for(i=0;i<list[u].size();i++)
    {
        v
=list[u][i];
        
if(col[v]==0)
        {
            tol
++;
            dfs(v,u,depth
+1);
            low[u]
=min(low[u],low[v]);
            
/*求割点
            if(u==root&&col>1||x!=root&&low[v]>=dep[u])
                  iscut[u]=1;
            
*/
            
/*求桥
            if(low[v]>dep[u])
            {
                bridge[++nb][0]=u;
                bridge[nb][1]=v;
            }
            
*/
        }
        
else
        {
            
if(v!=fa||tofa)
                low[u]
=min(low[u],dep[v]);
            
else
                tofa
=1;
        }
    }
    
return 0;
}
int main()
{
    
    root
=1;
    dfs(root,
-1,1);
    
}