C/C++の宿題を片付けます 106代目
レス数が950を超えています。1000を超えると書き込みができなくなります。
0994デフォルトの名無しさん
2008/05/17(土) 19:30:57トポロジカルオーダーの逆順で表示する
#define N 8
int edge[N][N] = {
/* 0 1 2 3 4 5 6 7 */
{0,1,0,0,1,0,0,0}, /* 0 */
{0,0,0,0,0,0,1,0}, /* 1 */
{0,0,0,1,0,0,1,0}, /* 2 */
{0,0,0,0,0,0,0,1}, /* 3 */
{0,0,0,0,0,1,0,0}, /* 4 */
{0,0,0,0,0,0,1,0}, /* 5 */
{0,0,0,0,0,0,0,1}, /* 6 */
{0,0,0,0,0,0,0,0} /* 7 */
};
int mark[N];
void visit(int v) {
int i;
for (i = 0; i < N; ++i)
if (edge[v][i] && !mark[i]) visit(i);
printf("%d ", v);
mark[v] = 1;
}
main() {
int i;
for (i = 0; i < N; ++i)
if (!mark[i]) visit(i);
}
レス数が950を超えています。1000を超えると書き込みができなくなります。