y koordinata lokacije na mapi na kojoj se zgrada nalazi. Potrebno je projektovati takvu funkcionalnu mrežu
telefonskih kablova da se za povezivanje zgrada potroši što je god moguće manje kabla. Mreža je
funkcionalna ukoliko postoji kablovska veza između svake dvije zgrade, koja ne mora nužno biti direktna,
nego može prolaziti i kroz druge zgrade. Kablovi se prostiru pravolinijski (tj. najkraćim putem) od zgrade do
zgrade, a jedine tačke u kojima se kablovi mogu međusobno vezati u mrežu (tj. jedine tačke u kojima se
mreža kablova razgranava) jesu upravo zgrade.
1: #include <fstream> // U slucaju jezika C++ pozeljno je
2: #include <cstdio> // zaglavlja tipa cstdio umjesto stdio.h i slicno
3: #include <cmath>
4:
5: using namespace std; //Takodjer pozeljna linija u slucaju jezika C++
6:
7: int X[100],Y[100],Obradjen[100];
8: float Mat[100][100];
9:
10: int main(void) {
11: int N,I,J,K,P;
12: float Min,Duzina;
13: ifstream Ulaz("kablovi.in");
14: FILE *Izlaz=fopen("kablovi.out","w");
15: Ulaz>>N;
16: for(I=0;I<N;I++) {
17: Ulaz>>X[I]>>Y[I]; Mat[I][I]=1e30;
18: for(J=0;J<I;J++)
19: Mat[I][J]=Mat[J][I]=sqrt(pow(X[I]-X[J],2.0)+pow(Y[I]-Y[J],2.0));
20: }
21: Duzina=0; Obradjen[0]=1;
22: for(K=1;K<N;K++) Obradjen[K]=0;
23: for(K=1;K<N;K++) {
24: Min=Mat[0][0];
25: for(I=0;I<N;I++)
26: for(J=0;J<N;J++)
27: if(!Obradjen[I]&&Obradjen[J]&&Mat[I][J]<Min) Min=Mat[P=I][J];
28: Duzina+=Min; Obradjen[P]=1;
29: }
30: fprintf(Izlaz,"%.2f\n",Duzina);
31: fclose(Izlaz);
32: return 0;
33: }
Moze li mi neko objasnti ovaj zadatak? Imam problema sa datotekama :$ (izmedju ostalog nejasna mi je 14. linija)
[Ovu poruku je menjao Mihajlo Cvetanović dana 02.02.2011. u 10:28 GMT+1]