Pagini recente » Cod sursa (job #238009) | Cod sursa (job #2076112) | Cod sursa (job #252849) | Cod sursa (job #1406483) | Cod sursa (job #1661879)
#include <fstream>
#include <cstdio>
#include <algorithm>
#include <cmath>
#include <cstring>
#include <vector>
#include <queue>
#include <stack>
#include <set>
#include <iomanip>
#define NMax 1505
#define INF 0x3f3f3f3f
#define mod 104659
#define eps 0.0000001
using namespace std;
int ANS[NMax],viz[NMax];
double dist[NMax];
int n,m,x,y,c;
vector<pair<int,double> > G[NMax];
queue<int> q;
void bf(){
for(int i = 2; i <= n; ++i)
dist[i] = 10000000.0;
dist[1] = 1;
ANS[1] = 1;
q.push(1);
viz[1] = 1;
while(!q.empty()){
int nod = q.front();
q.pop();
for(int i = 0; i < G[nod].size(); ++i){
if(abs(dist[G[nod][i].first] - dist[nod] * G[nod][i].second) <= eps){
ANS[G[nod][i].first] = ANS[G[nod][i].first] + ANS[nod];
}
if(dist[G[nod][i].first] - dist[nod] * G[nod][i].second > eps){
dist[G[nod][i].first] = dist[nod] * G[nod][i].second;
ANS[G[nod][i].first] = ANS[nod];
if(viz[G[nod][i].first] == 0){
q.push(G[nod][i].first);
viz[G[nod][i].first] = 1;
}
}
}
}
ofstream g("dmin.out");
for(int i = 2; i <= n; ++i){
g << ANS[i] % mod <<' ';
}
g.close();
}
int main()
{
ifstream f("dmin.in");
f >> n >> m;
for(int i = 1; i <= m; ++i){
f >> x >> y >> c;
double w = log(c);
G[x].push_back(make_pair(y,w));
G[y].push_back(make_pair(x,w));
}
bf();
f.close();
return 0;
}