zoukankan      html  css  js  c++  java
  • 无向图连通图(割)

    无向图连通图(割)
    
    	int bridge,edge[v][v],ans[v],prve[v],vis[v];
    
    // vis[i] 0为尚未访问 1为正在访问 2已经访问
    //ans[i] 该点能到达的最小序号
    // pre[i] 该点的序号
    // INIT: edge[][]邻接矩阵;vis[],pre[],anc[],deg[]置为0;
     //k=deg[0], deg[i]+1(i=1…n-1) 为删除该节点后得到的连通图个数
     //  注意:0作为根比较特殊!
    
    
    void dfs(int cur,int father,int dep,int n)
    {
    	int cnt = 0;
    	vis[cur] = 1;
    	pre[cur] = ans[cur] = dep;
    	for(int i=0;i<n;i++)
    	{
    		if(edge[cur][i])//有一条边cur到i
    		{
    			if(i!=father && 1 == vis[i])
    			{
    				if(pre[i]<ans[cur])
    				{
    					ans[cur] = pre[i];//是一条回边
    				}
    			}
    		}
    		if(0==vis[i]) //是一条树边
    		{
    			dfs(i,cur,dep+1,n);
    			++cnt 
    			if(ans[i]<ans[cur])
    				ans[cur]= ans[i];//更新该点能到达的最小值
    			if((cur==0 && cnt>1)//父节点并且分支个数大于1
    				|| (cnt!=0 && ans[i]>=pre[cur])
    				++deg[cur];
    		}
    	}
    	vis[cur] =2;
    }
    

      

  • 相关阅读:
    UnityGUI Keynote
    Unity3D Asset 导入&导出
    Unity3d平台信息设置
    Unity3D自带Demo AngryBots路径
    如何判定Unity已破解成功
    fbx模型
    Init & Deinit & ARC
    Subscript & Inheritance
    Properties & Method
    Enumeration & Class & Structure
  • 原文地址:https://www.cnblogs.com/Deng1185246160/p/3580936.html
Copyright © 2011-2022 走看看