Difference between r1.2 and the current
@@ -33,9 +33,184 @@
== 천준현 ==
== 박인서 ==
----
== 박인서 ==
* Minimum Spanning Tree
* 입력 예
{{{
1 2 2
1 3 2
2 4 4
3 4 1
2 7 1
3 7 5
3 6 2
6 7 4
3 5 3
5 6 3
}}}
* 출력 예 : 11
* 소스
{{{
#include <stdio.h>
#define LEN 11
int a[LEN][3],ver[LEN];
int oper(int a,int b)
{
if(a==0 && b==1) return 1;
if(a==1 && b==0) return 1;
return 0;
}
int main()
{
int i,min[3]={0,0,100},res=0;
for(i=0;i<10;i++) scanf("%d %d %d",&a[i][0],&a[i][1],&a[i][2]);
ver[1]=1;
while(1)
{
min[2]=100;
for(i=0;i<10;i++)
{
if(oper(ver[a[i][0]], ver[a[i][1]]) && a[i][2]<min[2]) min[0]=a[i][0],min[1]=a[i][1],min[2]=a[i][2];
}
if(min[2]==100) break;
ver[min[0]]=1,ver[min[1]]=1;
res+=min[2];
}
printf("%d",res);
return 0;
}
}}}
== 이원준 =={{{
#include<stdio.h>
void MST(int S[], int E[], int N[]){
int temp[7];
int ntemp[6] = { 0 };
int i, j, k, m;
int mini = 0;
int mnum;
int flag = 0;
int f = 0;
temp[0] = 5;
for (i = 0; i < 7; i++){
mini = 0;
for (j = 0; j < 10; j++){
for (k = 0; k < i; k++){
if (S[j] == temp[k]){
for (m = 0; m < i; m++){
if (E[j] == temp[m]){
flag = 1;
break;
}
}
if (flag == 0){
if (mini == 0){
temp[i] = E[j];
ntemp[i-1] = j;
mini = N[j];
}
else if (mini > N[j]){
temp[i] = E[j];
ntemp[i-1] = j;
mini = N[j];
}
}
flag = 0;
}
if (E[j] == temp[k]){
for (m = 0; m < i; m++){
if (S[j] == temp[m]){
flag = 1;
break;
}
}
if (flag == 0){
if (mini == 0){
temp[i] = S[j];
ntemp[i-1] = j;
mini = N[j];
}
else if (mini > N[j]){
temp[i] = S[j];
ntemp[i-1] = j;
mini = N[j];
}
}
flag = 0;
}
}
}
}
k = 1;
for (i = 0; i < 6; i++){
f += N[ntemp[i]];
}
printf("%d", f);
}
void main(){
int S[10];
int E[10];
int N[10];
S[0] = 1;
E[0] = 3;
N[0] = 2;
S[1] = 1;
E[1] = 2;
N[1] = 2;
S[2] = 2;
E[2] = 4;
N[2] = 4;
S[3] = 2;
E[3] = 7;
N[3] = 6;
S[4] = 3;
E[4] = 4;
N[4] = 1;
S[5] = 3;
E[5] = 7;
N[5] = 7;
S[6] = 3;
E[6] = 5;
N[6] = 3;
S[7] = 3;
E[7] = 6;
N[7] = 2;
S[8] = 5;
E[8] = 6;
N[8] = 3;
S[9] = 6;
E[9] = 7;
N[9] = 8;
MST(S, E, N);
}
}}}
== 남헌 ==----
5.2. 박인서 ¶
- Minimum Spanning Tree
- 입력 예
- 입력 예
1 2 2 1 3 2 2 4 4 3 4 1 2 7 1 3 7 5 3 6 2 6 7 4 3 5 3 5 6 3
- 출력 예 : 11
- 소스
#include <stdio.h> #define LEN 11 int a[LEN][3],ver[LEN]; int oper(int a,int b) { if(a==0 && b==1) return 1; if(a==1 && b==0) return 1; return 0; } int main() { int i,min[3]={0,0,100},res=0; for(i=0;i<10;i++) scanf("%d %d %d",&a[i][0],&a[i][1],&a[i][2]); ver[1]=1; while(1) { min[2]=100; for(i=0;i<10;i++) { if(oper(ver[a[i][0]], ver[a[i][1]]) && a[i][2]<min[2]) min[0]=a[i][0],min[1]=a[i][1],min[2]=a[i][2]; } if(min[2]==100) break; ver[min[0]]=1,ver[min[1]]=1; res+=min[2]; } printf("%d",res); return 0; }
5.3. 이원준 ¶
#include<stdio.h> void MST(int S[], int E[], int N[]){ int temp[7]; int ntemp[6] = { 0 }; int i, j, k, m; int mini = 0; int mnum; int flag = 0; int f = 0; temp[0] = 5; for (i = 0; i < 7; i++){ mini = 0; for (j = 0; j < 10; j++){ for (k = 0; k < i; k++){ if (S[j] == temp[k]){ for (m = 0; m < i; m++){ if (E[j] == temp[m]){ flag = 1; break; } } if (flag == 0){ if (mini == 0){ temp[i] = E[j]; ntemp[i-1] = j; mini = N[j]; } else if (mini > N[j]){ temp[i] = E[j]; ntemp[i-1] = j; mini = N[j]; } } flag = 0; } if (E[j] == temp[k]){ for (m = 0; m < i; m++){ if (S[j] == temp[m]){ flag = 1; break; } } if (flag == 0){ if (mini == 0){ temp[i] = S[j]; ntemp[i-1] = j; mini = N[j]; } else if (mini > N[j]){ temp[i] = S[j]; ntemp[i-1] = j; mini = N[j]; } } flag = 0; } } } } k = 1; for (i = 0; i < 6; i++){ f += N[ntemp[i]]; } printf("%d", f); } void main(){ int S[10]; int E[10]; int N[10]; S[0] = 1; E[0] = 3; N[0] = 2; S[1] = 1; E[1] = 2; N[1] = 2; S[2] = 2; E[2] = 4; N[2] = 4; S[3] = 2; E[3] = 7; N[3] = 6; S[4] = 3; E[4] = 4; N[4] = 1; S[5] = 3; E[5] = 7; N[5] = 7; S[6] = 3; E[6] = 5; N[6] = 3; S[7] = 3; E[7] = 6; N[7] = 2; S[8] = 5; E[8] = 6; N[8] = 3; S[9] = 6; E[9] = 7; N[9] = 8; MST(S, E, N); }