Мне дают ввод следующим образом, где первая строка содержит количество вершин и ребер неориентированного графа;и последующие строки содержат названия вершин, между которыми есть ребро.
Ввод:
9 8
sainteanne fortdefrance
bassepointe latrinite
bridgetown jackmans
fortdefrance ducos
holetown bridgetown
shanty bridgetown
fortdefrance bassepointe
jackmans shanty
Это означает, что граф имеет 9 вершин и 8 ребер.Существуют ребра между элементами в каждой из вышеупомянутых пар.Конечная цель - найти связанные компоненты на этом графике.
Однако работать с вершинами в качестве порядковых номеров проще, чем со строками.Поэтому я ищу способ преобразовать вышеупомянутую информацию во что-то такое:
0 1
2 3
4 5
1 6
7 4
8 4
1 2
5 8
Я написал следующий код C, чтобы прочитать файл и создать структуру, содержащую ребра, в которых идентификатор вершины должен бытьсохранено.
typedef struct {
unsigned int first;
unsigned int second;
} edge;
int main()
{
unsigned int order; // no.of Vertices
unsigned int n; // no.of Edges
edge *edges;
scanf("%u %u",&order,&n);
edges = malloc(n * sizeof(edge));
char first_string[20];
char second_string[20];
for (int i=0;i<n;i++)
{
scanf("%s %s",first_string,second_string);
}
}