有向图最小点基(邻接阵)O(n^2)

有向图最小点基 ( 邻接阵 )O(n^2)
| 点基 B 满足:对于任意一个顶点 Vj ,一定存在 B 中的一个 Vi, 使得 Vi Vj
| 的前代。
\*==================================================*/
// 返回点基大小和点基
// 传入图的大小 n 和邻接阵 mat, 不相邻点边权 0
// 需要调用强连通分支
#define MAXN 100
int base_vertex(int n,int mat[][MAXN],int* sets){
int ret=0,id[MAXN],v[MAXN],i,j;
j=find_components(n,mat,id);
for (i=0;i
for (i=0;i
for (j=0;j
if (id[i]!=id[j]&&mat[i][j])
v[id[j]-1]=0;
for (i=0;i
if (v[id[i]-1])
v[id[sets[ret++]=i]-1]=0;
return ret;
}

你可能感兴趣的:(算法)