Pagini recente » Cod sursa (job #453881) | Cod sursa (job #381235) | Cod sursa (job #2491161) | Cod sursa (job #2928499) | Cod sursa (job #1227467)
#include <iostream>
#include <fstream>
#include <queue>
#include <cmath>
#include <vector>
using namespace std;
ifstream fin("dmin.in");
ofstream fout("dmin.out");
#define MAX 1502
#define mp make_pair
#define pb push_back
#define eps 1e-10
#define MOD 104659
typedef vector<pair<int, double> > :: iterator iter;
vector<pair<int, double> > G[MAX];
priority_queue <pair<double, int> > H;
double c, dist[MAX];
int val[MAX];
int main()
{
int n, m, x, y, nod, i;
fin>>n>>m;
while(m--)
{
fin>>x>>y>>c;
c=log10(c);
G[x].pb(mp(y, c));
G[y].pb(mp(x, c));
}
H.push(mp(0, 1));
val[1]=1;
for(i=2;i<=n;i++)
dist[i]=1<<30;
while(H.size())
{
nod=H.top().second;
H.pop();
for(iter it=G[nod].begin();it!=G[nod].end();it++)
{
if(abs(dist[nod]+it->second-dist[it->first])<=eps)
{
val[it->first]+=val[nod];
if(val[it->first]>MOD)
val[it->first]-=MOD;
}
else if((dist[nod]+it->second)<dist[it->first])
{
dist[it->first]=(dist[nod]+it->second);
val[it->first]=val[nod];
H.push(mp(-dist[it->first], it->first));
}
}
}
for(i=2;i<=n;i++)
{
fout<<val[i]<<" ";
}
}