Pagini recente » Cod sursa (job #2613472) | Cod sursa (job #1076837) | Cod sursa (job #1702555) | Cod sursa (job #138415) | Cod sursa (job #2146632)
#include <bits/stdc++.h>
using namespace std;
const int NMAX = 1501;
const int MMAX = 2501;
int N,M;
#define oo (1 << 30)
#define MOD 104659
bitset <NMAX> beenThere;
int countt;
vector < pair < int , int > > myVector[NMAX];
multiset < int > Set[NMAX];
int Road[NMAX*2];
long long Answer =1;
struct EDGE
{
int x,y,price;
}Edge[MMAX];
inline void ScanData()
{
scanf("%d%d", &N , &M);
for ( int i = 1; i <= M ; ++i)
{
int a,b,c;
scanf("%d%d%d", &a,&b,&c);
Edge[i].x = a , Edge[i].y = b , Edge[i].price = c;
myVector[a].push_back(make_pair(b,c));
myVector[b].push_back(make_pair(a,c));
}
}
void DFS(int Node)
{
beenThere[Node] = true;
Road[++countt] = Node;
int Who = Road[countt];
Set[Who].insert(Answer);
for ( size_t k = 0 ; k < myVector[Node].size() ; ++k)
{
int neighbor = myVector[Node][k].first;
int price = myVector[Node][k].second;
Answer = (Answer*price)%MOD;
if(!beenThere[neighbor])
DFS(neighbor);
Answer = (Answer/price)%MOD;
}
countt--;
beenThere[Node] =false;
}
int main()
{
freopen("dmin.in", "r" , stdin);
freopen("dmin.out","w", stdout);
ScanData();
DFS(1);
for ( int i = 2; i <= N ; ++i)
{
int Min = (*Set[i].begin())%MOD;
printf("%d " , (Set[i].count(Min))%MOD);
}
}