Pagini recente » Cod sursa (job #2300941) | Cod sursa (job #1709844) | Cod sursa (job #1287798) | Cod sursa (job #1362214) | Cod sursa (job #433537)
Cod sursa(job #433537)
#include<fstream>
#include<math.h>
#include<vector>
#include<queue>
#define dmax 1505
#define putin 1e-10
#define mult 1000000000
using namespace std;
ifstream in("dmin.in");
ofstream out("dmin.out");
long long n,m,nrd[dmax];
long double dm[dmax];
bool t[dmax];
struct muchie
{ int v;
long long c;
};
vector<struct muchie>g[dmax];
vector<struct muchie>::iterator it;
queue<int>q;
void bellman()
{ long long i,crt;
for(i=1;i<=n;i++)
dm[i]=mult;
q.push(1);
t[1]=1;
dm[1]=0;
nrd[1]=1;
while(!q.empty() )
{ crt=q.front();
q.pop();
t[crt]=0;
for(it=g[crt].begin();it < g[crt].end();it++)
{ if(dm[it->v] - (dm[crt] + log(it->c) ) > putin )
{ dm[it->v]=dm[crt] + log(it->c);
nrd[it->v]=nrd[crt];
if(nrd[it->v] > 104659)
nrd[it->v]%=104659;
if(!t[it->v])
{ q.push(it->v);
t[it->v]=1;
}
}
else if( (dm[crt] + log(it->c) - dm[it->v]) <= putin)
{ nrd[it->v]+=nrd[crt];
if(nrd[it->v] > 104659)
nrd[it->v]%=104659;
}
}
}
for(i=2;i<=n;i++)
out<<nrd[i]<<" ";
}
int main()
{ long long i,a,b,r;
muchie w;
in>>n>>m;
for(i=1;i<=m;i++)
{ in>>a>>b>>r;
w.c=r;
w.v=b;
g[a].push_back(w);
w.v=a;
g[b].push_back(w);
}
in.close();
bellman();
out.close();
return 0;
}