无向图关键点(dfs邻接阵),割点

来源:互联网 发布:1024程序员节 微博 编辑:程序博客网 时间:2024/05/18 02:38
#define MAXN 110 void search(int n,intmat[][MAXN],int* dfn,int* low,int now,int& ret,int* key,int& cnt,introot,int& rd,int* bb){       int i;       dfn[now]=low[now]=++cnt;       for(i=0;i<n;i++)              if(mat[now][i]){                     if(!dfn[i]){                            search(n,mat,dfn,low,i,ret,key,cnt,root,rd,bb);                            if(low[i]<low[now])                                   low[now]=low[i];                            if(low[i]>=dfn[now]){                                   if(now!=root&&!bb[now])                                          key[ret++]=now,bb[now]=1;                                   elseif(now==root)                                          rd++;                            }                     }                     elseif (dfn[i]<low[now])                            low[now]=dfn[i];              }} int key_vertex(int n,int mat[][MAXN],int* key){//进行值传递时,只要把数组名传递就好       intret=0,i,cnt,rd,dfn[MAXN],low[MAXN],bb[MAXN];       for(i=0;i<n;dfn[i++]=bb[i]=0);       for(cnt=i=0;i<n;i++)              if(!dfn[i]){                     rd=0;                     search(n,mat,dfn,low,i,ret,key,cnt,i,rd,bb);                     if(rd>1&&!bb[i])                            key[ret++]=i,bb[i]=1;              }       returnret;}Note:这里数组都是从0开始计数的,具体题目中可能是用1开始计数,适当调整poj1144
 


poj1144题啊,就是因为数组的下界问题,调了一个晚上,真想骂人了~~

 

 

 

原创粉丝点击