В данном примере задаётся по три числа: индексы двух вершин и вес ребра между ними.
int N;
cin >> N;
int** am = new int*[N];
for(int i = 0; i != N; ++i)
am[i] = new int[N];
int i, j, l;
while(cin) {
cin >> i >> j >> l;
am[i][j] = l;
}
upd.
Окей, если вершины - это точки, а рёбра расстояния между ними, делаем следующим образом:
// N - количество точек
// points - список точек
// points[i].x - x-координата i-той точки
// points[i].y - y-координата i-той точки
int** am = new int*[N];
for(int i = 0; i != N; ++i)
am[i] = new int[N];
for(int i = 0; i != N; ++i) {
for(int j = 0; j != N; ++j) {
am[i][j] = sqrt( sqr(points[i].x - points[j].x) + sqr(points[i].y - points[j].y) );
}
}
Можете также оптимизировать, высчитав не всё матрицу, а только её половину (треугольник). А вторую половину заполнить зеркально главной диагонали.