Cod sursa(job #701757)

Utilizator cashinmypocketAndrei Mihu cashinmypocket Data 1 martie 2012 17:42:38
Problema Traseu Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.8 kb
#include<fstream>
#include<algorithm>
#include<cstring>
#define INF 0x3f3f
using namespace std;
ifstream f("traseu.in");
ofstream g("traseu.out");
int D[62],T[62],U[62],C[62][62],s,n,m,i,j;
void citire()
{ f>>n>>m;
  int i,j;
  for(i=1;i<=n;i++)
	  for(j=i+1;j<=n;j++) if(i-j) C[i][j]=C[j][i]=INF;
  while(m--) f>>i>>j>>C[i][j];
}
void solve(int s)
{ int nod,min,i;
  memset(D,INF,sizeof(D));
  memset(U,0,sizeof(U));
  memset(T,0,sizeof(T));
  D[s]=0;
  while(1)  
  { min=INF;
    nod=-1;
    for(i=1;i<=n;i++) if(!U[i]&&D[i]<min) min=D[i],nod=i;
    if(min==INF) break;
    U[nod]=1;
    for(i=1;i<=n;i++) if(D[i]>D[nod]+C[nod][i]) D[i]=D[nod]+C[nod][i];
  }
}
int main()
{ citire();
  solve(1);
  for(i=1;i<=n;i++) if(C[i][1]!=INF) s+=C[i][1]+D[i];
  g<<s<<"\n";
  return 0;
}