Pagini: [1]   În jos
  Imprimă  
Ajutor Subiect: Desen  (Citit de 7022 ori)
0 Utilizatori şi 1 Vizitator pe acest subiect.
R.A.R
Strain
*

Karma: -7
Deconectat Deconectat

Mesaje: 37



Vezi Profilul
« : Decembrie 14, 2010, 20:10:37 »

Am incercat sa fac problema Desen insa iau 0 puncte si nu inteleg ce e gresit la rationament :
1. ca sa adaug un nod la arborele deja format caut muchia de cost minim.
2. dupa ce am legat nodul,caut alte puncte al caror cost ar putea fi micsorat.

Cod:
#include <fstream>
#include <iomanip>
#include <cmath>
#define nmax 1002

using namespace std;

ifstream in("desen.in");
ofstream out("desen.out");

double X[nmax],Y[nmax];
int N,i,j;
double D[nmax];//muchia minima cu care am legat un nod de arbore
double C[nmax][nmax];//costul intre oricare 2 noduri

int main()
{
    in>>N;
    double S = 0,s;
    for(i=1;i<=N;i++)in>>X[i]>>Y[i];
    for(i=1;i<N;i++)for(j=i+1;j<=N;j++)C[i][j]=C[j][i] = sqrt((X[i]-X[j])*(X[i]-X[j])+(Y[i]-Y[j])*(Y[i]-Y[j]));//calculez distanta intre oricare 2 puncte
    out<<setprecision(6);out<<fixed;
    out<<S<<'\n';
    for(i=2;i<=N;i++)
    {
        D[i] = 9999999;
        for(j=1;j<i;j++)
            if(C[i][j]<D[i])D[i]=C[i][j];
        S+=D[i];//actualizez costul
        for(j=1;j<i;j++)
            if(D[j]>C[i][j])S-=D[j],S+=D[i];//elimin muchia anterioara si o adaug pe cea noua
        out<<S<<'\n';
    }
    return 0;
}
Memorat
mathboy
Moderatori infoarena
Nu mai tace
*****

Karma: 150
Deconectat Deconectat

Mesaje: 259



Vezi Profilul
« Răspunde #1 : Decembrie 14, 2010, 20:33:34 »

Ai aceasta problema si aici - pentru ca inainte de toate a fost infoarena Smile
Vezi poate te ajuta cu ceva testele si indicatiile postate de ceilalti.
Memorat
S7012MY
Nu mai tace
*****

Karma: 26
Deconectat Deconectat

Mesaje: 648



Vezi Profilul
« Răspunde #2 : Decembrie 14, 2010, 22:06:51 »

evaluatorul de pe campion nu merge bn pt pb asta Sad
Memorat
Pagini: [1]   În sus
  Imprimă  
 
Schimbă forumul:  

Powered by SMF 1.1.19 | SMF © 2006-2013, Simple Machines