C言語で完全グラフの頂点対のリストの生成器を書いた

はじめに

完全グラフの頂点対のリストを自動生成する方法を、先日から考えているGraphviz用のdotファイルの生成を応用して考えた。

コード

/* Graph Generator */

#include <stdio.h>

int main(void)
{
  /* 変数の宣言 */
  int i, j, n;
  FILE *fp;

  /* 完全グラフのnの入力を促す。 */
  printf("Please input n:\n");
  scanf("%d", &n);

  /* ファイルに書き込む。 */
  fp = fopen ("data", "w");

  /* 頂点の総数、辺の総数を書き込む */
  for(i = 1; i <= 2; i++)
    fprintf(fp, "%d\n", n);
  /* 頂点の隣接関係をどんどん書き込む */
  for(i = 1; i <= n; i++){
    for(j = i; j <= n; j++){
      if(i != j){
	fprintf(fp, "%d %d\n", i, j);
      }
    }
  }

  fclose(fp);

  return 0;
}

実行結果(生成されたファイル data の中身)

nが5のときの実行結果。

5
5
1 2
1 3
1 4
1 5
2 3
2 4
2 5
3 4
3 5
4 5