Cod sursa(job #1947950)

Utilizator cris90robert@yahoo.comseretan cristian [email protected] Data 31 martie 2017 15:40:58
Problema Arbore partial de cost minim Scor 20
Compilator cpp Status done
Runda Arhiva educationala Marime 1.1 kb
#include<iostream>
#include<fstream>
using namespace std;
struct element
{
	int x,y,c;
};
element v[100],aux;
long  b[100][100]={},n;
int parcurgere(int i)
{
	int viz[100]={},coada[100],u,p,k,j,ok=1;
	viz[v[i].x]=1;
	u=1;
	p=1;
	coada[u]=v[i].x;
	while(p<=u)
	{
		k=coada[p];
		for(j=1;j<=n;j++)
		{
			if((viz[j]==0)&&(b[k][j]==1))
			{
				viz[j]=1;
				u++;
				coada[u]=j;
			}
		}
		p++;
	}
	if(viz[v[i].y]==1)
	{
		ok=0;
	}
	return ok;
}
	
	
int main()
{
	long  m,j,i,p,cost=0;
	fstream f("apm.in",ios::in);
	f>>n>>m;
	for(i=1;i<=m;i++)
	{
		f>>v[i].x>>v[i].y>>v[i].c;
	}
	f.close();
	for(i=1;i<m;i++)
	{
		for(j=i+1;j<=m;j++)
		{
			if(v[i].c>v[j].c)
			{
				aux=v[i];
				v[i]=v[j];
				v[j]=aux;
			}
		}
	}
	p=0;
	for(i=1;i<=m;i++)
	{
		if(parcurgere(i)==1)
		{
			b[v[i].y][v[i].x]=1;
			b[v[i].x][v[i].y]=1;
			p++;
			cost=cost+v[i].c;
		}
	}
	fstream g("apm.out",ios::out);
	g<<cost<<endl;
	g<<p<<endl;
	for(i=1;i<=n;i++)
	{
		for(j=i+1;j<=n;j++)
		{
			if(b[i][j]==1)
			{
				g<<i<<" "<<j<<endl;
			}
		}
	}
	g.close();
}