Pagini recente » Cod sursa (job #2026694) | Cod sursa (job #2115463) | Cod sursa (job #1154451) | Cod sursa (job #1966528) | Cod sursa (job #1704584)
#include <iostream>
#include <algorithm>
#include <fstream>
using namespace std;
struct nod{int nod1;int nod2;int cost;};
bool cmp(nod A,nod B)
{
if(A.cost<=B.cost)
return true;
else
return false;
}
void Initializare(int u,int *&r)
{
r[u]=u;
}
int Reprezentant(int u,int *&r)
{
return r[u];
}
void Reuneste(int u,int v,int n,int *&r)
{
int r1,r2,k;
r1=Reprezentant(u,r);//r1=r[u]
r2=Reprezentant(v,r);//r2=r[v]
for(k=0;k<n;k++)
if(r[k]==r2)
r[k]=r1;
}
int main()
{
int n,m,i,nr,*r;
nod muchie[100];
//muchie=new nod;
ifstream f("Date.in");
f>>n;
f>>m;
r=new int[n+1];
for(i=0;i<m;i++)
{
f>>muchie[i].nod1;
f>>muchie[i].nod2;
f>>muchie[i].cost;
}
for(i=0;i<m;i++)
cout<<muchie[i].nod1<<"-"<<muchie[i].nod2<<"--"<<muchie[i].cost<<"; ";
cout<<endl;
sort(muchie,muchie+m,cmp);
for(i=0;i<m;i++)
cout<<muchie[i].nod1<<"-"<<muchie[i].nod2<<"--"<<muchie[i].cost<<"; ";
cout<<endl;
for(i=0;i<n;i++)
r[i]=0;
for(i=0;i<n;i++)
Initializare(i,r);
nr=0;
for(i=0;i<m;i++)
if(Reprezentant(muchie[i].nod1,r)!=Reprezentant(muchie[i].nod2,r))
{
cout<<muchie[i].nod1<<"-"<<muchie[i].nod2<<" ";
Reuneste(muchie[i].nod1,muchie[i].nod2,n,r);
nr++;
if(nr==n-1)
break;
}
return 0;
}