Prime
#include <stdio.h>
int main()
{
int graph[10][10];
for (int i = 0; i < 10; i++)
for (int j = 0; j < 10; j++)
graph[i][j] = 0;
graph[0][1] = 3;
graph[0][3] = 4;
graph[0][4] = 4;
graph[1][2] = 10;
graph[1][4] = 2;
graph[1][5] = 3;
graph[2][5] = 6;
graph[2][6] = 1;
graph[3][4] = 5;
graph[3][7] = 6;
graph[4][5] = 11;
graph[4][7] = 2;
graph[4][8] = 1;
graph[5][6] = 2;
graph[5][8] = 3;
graph[5][9] = 11;
graph[6][9] = 8;
graph[7][8] = 4;
graph[8][9] = 7;
for (int i = 0; i < 10; i++)
for (int j = 0; j < 10; j++)
if (graph[i][j] == 0)
graph[i][j] = graph[j][i];
int k;
char i, j;
scanf("%c,%c,%d", &i, &j, &k);
graph[i - 'A'][j - 'A'] = k;
graph[j - 'A'][i - 'A'] = k;
int parent[10], dist[10];
for (int i = 0; i < 10; i++)
dist[i] = 99;
dist[0] = 0;
parent[0] = -1;
while (1)
{
int min = 99, save = -1;
for (int i = 0; i < 10; i++)
{
if (dist[i] >= 0 && dist[i] < min)
{
min = dist[i];
save = i;
}
}
if (save == -1)
break;
dist[save] = -1;
for (int i = 0; i < 10; i++)
{
if (dist[i] != 0 && graph[save][i] != 0)
{
if (graph[save][i] < dist[i])
{
dist[i] = graph[save][i];
parent[i] = save;
}
}
}
}
int print[100], run = 0;
for (int i = 1; i < 10; i++)
{
print[run++] = graph[parent[i]][i];
}
for (int i = run - 1; i > 0; i--)
{
for (int j = i; j < run; j++)
{
if (print[j - 1] > print[j])
{
int temp = print[j - 1];
print[j - 1] = print[j];
print[j] = temp;
}
}
}
if (run > 0)
{
for (int i = 0; i < run; i++)
{
printf("%d,", print[i]);
}
}
else
{
printf("-1");
}
return 0;
}
kuskal
#include <stdio.h>
int graph[10][10] = {0};
void merge(int parent[], int i, int j)
{
int temp1 = i, temp2 = j;
for (; parent[i] >= 0; i = parent[i])
;
for (; parent[j] >= 0; j = parent[j])
;
if (i != j)
{
parent[i] = j;
printf("%d,", graph[temp1][temp2]);
}
}
int main()
{
int temp, i, j, edge[2];
graph[0][1] = 3;
graph[0][3] = 4;
graph[0][4] = 4;
graph[1][2] = 10;
graph[1][4] = 2;
graph[1][5] = 3;
graph[2][5] = 6;
graph[2][6] = 1;
graph[3][4] = 5;
graph[3][7] = 6;
graph[4][5] = 11;
graph[4][7] = 2;
graph[4][8] = 1;
graph[5][6] = 2;
graph[5][8] = 3;
graph[5][9] = 11;
graph[6][9] = 8;
graph[7][8] = 4;
graph[8][9] = 7;
for (i = 0; i < 10; i++)
{
for (j = 0; j < 10; j++)
{
if (graph[i][j] == 0)
graph[i][j] = graph[j][i];
}
}
char n1, n2;
int weight;
scanf("%c,%c,%d", &n1, &n2, &weight);
graph[n1 - 'A'][n2 - 'A'] = weight;
graph[n2 - 'A'][n1 - 'A'] = weight;
int parent[10] = {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1};
while (1)
{
temp = 99;
for (i = 0; i < 10; i++)
{
for (j = 0; j < 10; j++)
{
if (graph[i][j] != 0)
{
if (graph[i][j] < temp)
{
temp = graph[i][j];
edge[0] = i;
edge[1] = j;
}
}
}
}
if (temp == 99)
break;
merge(parent, edge[0], edge[1]);
graph[edge[0]][edge[1]] = 0;
graph[edge[1]][edge[0]] = 0;
}
return 0;
}