在图中假设i连通j,j连通k,k连通.....q,则i与q是连通的,这时可用传递闭包的方式求解:
/*
linkable:记录各结点的连通性,用前需初始化
nNode:为图中的结点数
*/
const int MAXN = 400;
void fun(const int& nNode, int linkable[MAXN][MAXN])
{
for(int i=1; i<=nNode; i++)
linkable[i][i] = 1;
for(int k=1; k<=nNode; k++)
for(int i=1; i<=nNode; i++)
for(int j=1; j<=nNode; j++)
linkable[i][j] = linkable[i][j] || (linkable[i][k] && linkable[k][j]);
}