본문내용
x,y 에 각각의 노드를 저장
y = j;
}
cout << endl << minium << \" :: \" ;
if(isInGroup(x,y)) // x,y 가 하나의 그룹에 같이 속할 경우
{
count++;
cout << \" \" << \"rejected \" <
continue;
}
if(isOneInGroup(x,y)) // x와y중 하나의 노드만 그룹에 속할경우
{ // 나머지 하나의 노드를 해당 그룹에 추가
cout << \"( \" << x << \" , \" << y << \" )\"<< \" cost = \" <
count_edge++;
count++;
continue;
}
if(groupA.size()==0) // 그룹 A가 비었을경우
{
groupA.push_back(x);
groupA.push_back(y);
cout << \"( \" << x << \" , \" << y << \" )\"<< \" cost = \" <
}
else if(groupB.size()==0) // 그룹 B가 비었을경우
{
groupB.push_back(x);
groupB.push_back(y);
cout << \"( \" << x << \" , \" << y << \" )\"<< \" cost = \" <
}
else if(groupC.size()==0) // 그룹 C가 비었을경우
{
groupC.push_back(x);
groupC.push_back(y);
cout << \"( \" << x << \" , \" << y << \" )\"<< \" cost = \" <
}
count_edge++;
count++;
}
}
bool isInGroup(int x, int y)
{
for(int i=0; i
if(x == groupA[i])
for(int j=0; j
if(y == groupA[j])
return true;
for(i=0; i
if(x == groupB[i])
for(int j=0; j
if(y == groupB[j])
return true;
for(i=0; i
if(x == groupC[i])
for(int j=0; j
if(y == groupC[j])
return true;
return false;
}
bool isOneInGroup(int x,int y)
{
int temp=x;
x>y?x=y,y=temp: true;
for(int i=0; i
if(x == groupA[i])
{
groupA.push_back(y); // 하나의 노드가 A에 속할 경우 나머지 노드도 A에 추가
return true;
}
for(i=0; i
if(x == groupB[i])
{
groupB.push_back(y); // 하나의 노드가 B에 속할 경우 나머지 노드도 B에 추가
return true;
}
for(i=0; i
if(x == groupC[i])
{
groupC.push_back(y); // 하나의 노드가 C에 속할 경우 나머지 노드도 C에 추가
return true;
}
return false;
}
void connectGroup()
{
int miniumAtoB = MAXIUM;
int miniumAtoC = MAXIUM;
int miniumBtoC = MAXIUM;
int minium = MAXIUM;
int x,y;
for(int i=0; i
for(int j=0; j
if(cost[groupA[i]][groupB[j]] < miniumAtoB)// A그룹과 B그룹간의 edge중 최소값검사
miniumAtoB = cost[groupA[i]][groupB[j]];
for(i=0; i
for(int j=0; j
if(cost[groupA[i]][groupC[j]] < miniumAtoC)// A그룹과 C그룹간의 edge중 최소값검사
{
miniumAtoC = cost[groupA[i]][groupC[j]];
x = groupA[i];
y = groupC[j];
}
cout << endl;
cout << cost[x][y] << \" :: \" << \"( \" << x << \" , \" << y << \" )\"<< \" cost = \" <
if(miniumAtoC < miniumAtoB)
for(int j=0; j
groupA.push_back(groupC[j]);
groupC.clear();
for(i=0; i
for(int j=0; j
if(cost[groupA[i]][groupB[j]] < miniumAtoB)
{
miniumAtoB = cost[groupA[i]][groupB[j]];
x = groupA[i];
y = groupB[j];
}
for(int j=0; j
groupA.push_back(groupB[j]);
groupB.clear();
cout << endl;
cout << cost[x][y] << \" :: \" << \"( \" << x << \" , \" << y << \" )\"<< \" cost = \" <
}
y = j;
}
cout << endl << minium << \" :: \" ;
if(isInGroup(x,y)) // x,y 가 하나의 그룹에 같이 속할 경우
{
count++;
cout << \" \" << \"rejected \" <
}
if(isOneInGroup(x,y)) // x와y중 하나의 노드만 그룹에 속할경우
{ // 나머지 하나의 노드를 해당 그룹에 추가
cout << \"( \" << x << \" , \" << y << \" )\"<< \" cost = \" <
count++;
continue;
}
if(groupA.size()==0) // 그룹 A가 비었을경우
{
groupA.push_back(x);
groupA.push_back(y);
cout << \"( \" << x << \" , \" << y << \" )\"<< \" cost = \" <
else if(groupB.size()==0) // 그룹 B가 비었을경우
{
groupB.push_back(x);
groupB.push_back(y);
cout << \"( \" << x << \" , \" << y << \" )\"<< \" cost = \" <
else if(groupC.size()==0) // 그룹 C가 비었을경우
{
groupC.push_back(x);
groupC.push_back(y);
cout << \"( \" << x << \" , \" << y << \" )\"<< \" cost = \" <
count_edge++;
count++;
}
}
bool isInGroup(int x, int y)
{
for(int i=0; i
for(int j=0; j
return true;
for(i=0; i
for(int j=0; j
return true;
for(i=0; i
for(int j=0; j
return true;
return false;
}
bool isOneInGroup(int x,int y)
{
int temp=x;
x>y?x=y,y=temp: true;
for(int i=0; i
{
groupA.push_back(y); // 하나의 노드가 A에 속할 경우 나머지 노드도 A에 추가
return true;
}
for(i=0; i
{
groupB.push_back(y); // 하나의 노드가 B에 속할 경우 나머지 노드도 B에 추가
return true;
}
for(i=0; i
{
groupC.push_back(y); // 하나의 노드가 C에 속할 경우 나머지 노드도 C에 추가
return true;
}
return false;
}
void connectGroup()
{
int miniumAtoB = MAXIUM;
int miniumAtoC = MAXIUM;
int miniumBtoC = MAXIUM;
int minium = MAXIUM;
int x,y;
for(int i=0; i
miniumAtoB = cost[groupA[i]][groupB[j]];
for(i=0; i
{
miniumAtoC = cost[groupA[i]][groupC[j]];
x = groupA[i];
y = groupC[j];
}
cout << endl;
cout << cost[x][y] << \" :: \" << \"( \" << x << \" , \" << y << \" )\"<< \" cost = \" <
for(int j=0; j
groupC.clear();
for(i=0; i
{
miniumAtoB = cost[groupA[i]][groupB[j]];
x = groupA[i];
y = groupB[j];
}
for(int j=0; j
groupB.clear();
cout << endl;
cout << cost[x][y] << \" :: \" << \"( \" << x << \" , \" << y << \" )\"<< \" cost = \" <
추천자료
워터마크(watermarking) 정보은닉의 최적화 알고리즘
Quick Sort(퀵소트) 정렬 알고리즘
[FORTRAN] 암호생성기, 암호해독기 알고리즘
질의 처리와 질의 최적화를 위한 알고리즘
[C언어]허프만 알고리즘을 이용한 Text 파일 압축/해제 프로그램
[C언어] Shortest path 알고리즘 프로그램 구현
[C/C++] Task06 (달팽이 알고리즘)
보안위협의 형태에 대해 조사하고 암호화 기법 알고리즘에 대해 조사하세요. (운영체제)
관용 암호 방식과 공개키 암호 방식 알고리즘 조사
[화일구조] 3원 다단계 합병 알고리즘 구현
특징점의 융선 연결정보를 이용한 지문인식 알고리즘에 관한ppt 발표자료 입니다.
★ 시스템프로그래밍 - 이중 패스 어셈블러의 알고리즘에 대하여 정리해 보세요
[파이썬]RLE 압축 알고리즘
소개글