انجمن گروه موج سازان
الگوریتم پریم سی پلاس پلاس کد بلاک - نسخه قابل چاپ

+- انجمن گروه موج سازان (http://www.mojsazan.com/forum)
+-- انجمن: برنامه نویسی عمومی (http://www.mojsazan.com/forum/forumdisplay.php?fid=1)
+--- انجمن: زبان برنامه نویسی خانواده C (http://www.mojsazan.com/forum/forumdisplay.php?fid=6)
+---- انجمن: ++C (http://www.mojsazan.com/forum/forumdisplay.php?fid=63)
+----- انجمن: سوال و جواب های سی پلاس پلاس (http://www.mojsazan.com/forum/forumdisplay.php?fid=65)
+----- موضوع: الگوریتم پریم سی پلاس پلاس کد بلاک (/showthread.php?tid=4274)



الگوریتم پریم سی پلاس پلاس کد بلاک - soratssss - 12-20-2018

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;

}