رتبه موضوع:
  • 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
الگوریتم پریم سی پلاس پلاس کد بلاک
#1
bv
/*
ÓáÇãÊí æ ÊÚÌíá ÏÑ ÝÑÌ ÇãÇã ÒãÇä ÕáæÇÊ
*/
#include <stdio.h>
#include <conio.h>
#include <iostream.h>

struct krus{
int v1;
int v2;
int weight;
};

int perim (int set[],struct krus
edge[],int n,int m);
void sort(struct krus ed[],int m);

void main()
{
clrscr();
int n,m;

cout<<"Input Num Vertex : ";
cin>>n;
int set[10];
for (int i=0;i<n;i++)
set[i]=i;

cout<<"Input Num Yal : ";
cin>>m;
struct krus edge[20];

for (i=0;i<m;i++)
{
cout<<" Num V1 : "; cin>>edge[i].v1;
cout<<" Num V2 : "; cin>>edge[i].v2;
cout<<" Weight : "; cin>>edge[i].weight;
gotoxy(wherex()+30,wherey()-2);
cout<<"("<<edge[i].v1<<","<<edge[i].v2<<") => W :"<<edge[i].weight<<"\n";
gotoxy(1,wherey()+2);
}
cout<<"\nWeight Is : "<<perim(set,edge,n,m);
getch();
}
//***********************************************
int perim(int set[],struct krus edge[],int n,int m)
{
int fe=0;
int p=0;
struct krus e;
while (fe<n-1)
{
//********************************
int y=0;
e.weight=0;
for (int i=0;i<m;i++)
if ((set[edge[i].v1]==0 && set[edge[i].v2]!=0) || (set[edge[i].v2]==0 && set[edge[i].v1]!=0))
{
if(y==0)
{
e=edge[i];
y++;
}
else
if (e.weight>edge[i].weight)
e=edge[i];
}
//**********************************
if (y!=0)
{
p+=e.weight;
cout<<"("<<e.v1<<","<<e.v2<<") => W :"<<e.weight<<"\t";
set[e.v1]=0;
set[e.v2]=0;
fe++;
}
else
break;
}
return p;

}
پاسخ
سپاس شده توسط


موضوعات مشابه ...
موضوع نویسنده پاسخ بازدید آخرین ارسال
  اجرا کد داس در سی پلاس mohammadjavodmw 4 4,192 10-05-2012, 10:06 AM
آخرین ارسال: علیرضا حر

پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان