Pagini recente » Cod sursa (job #131432) | Cod sursa (job #277795) | Cod sursa (job #225545) | Statistici iordache ina alexandra (iordacheina) | Cod sursa (job #1576731)
#include<fstream>
#include<string.h>
#include<math.h>
using namespace std;
#define Nmax 1507
#define MOD 104659
#define INF 99999999
ifstream f("dmin.in");
ofstream g("dmin.out");
int N,M,Nr[Nmax];
long double D[Nmax];
bool U[Nmax];
struct lista{int nod; long double cost; lista *leg;} *G[Nmax];
void adaug(int i,int j,float c)
{
lista *p;
p=new lista;
p->nod=j;
p->leg=G[i];
p->cost=c;
G[i]=p;
}
void citire()
{
f>>N>>M;
int i,j,c;
while(M--)
{
f>>i>>j>>c;
adaug(i,j,log2(c));
adaug(j,i,log2(c));
}
}
void Dyj(int source)
{
for(int i=1;i<=N;++i) D[i]=INF;
int mini,nod,poz;
D[source]=0;
while(1)
{
mini=INF;
for(int i=1;i<=N;++i) if(!U[i]&&D[i]<mini) mini=D[i],poz=i;
if(mini==INF) break;
nod=poz; U[nod]=1; Nr[1]=1;
for(lista *p=G[nod];p;p=p->leg)
{
long double x=D[nod]+p->cost;
if(D[p->nod]>x)
{
D[p->nod]=x;
Nr[p->nod]=Nr[nod];
}
else if(D[p->nod]==x) Nr[p->nod]+=Nr[nod],Nr[p->nod]%=MOD;
}
}
}
int main()
{
citire();
Dyj(1);
for(int i=2;i<=N;++i) g<<Nr[i]%MOD<<" ";
g<<'\n';
return 0;
}