#include using namespace std; struct edge { int v; long double c; edge() {} edge(int a, long double b) { v=a; c=b; } }; int m, n=0; map mp; vector gr[10005]; vector rev_gr[10005]; int brused=0; bool used[10005]; bool used2[10005]; vector podr; void dfs(int v) { used2[v]=1; int brs=gr[v].size(); for(int i=0; i qu; int main() { freopen("trade.in", "r", stdin); freopen("trade.out", "w", stdout); cin>>m; for(int i=0; i>a>>b>>c; int n1, n2; if(mp.find(a)==mp.end()) n1=n+1, n++, mp[a]=n; else n1=mp[a]; if(mp.find(b)==mp.end()) n2=n+1, n++, mp[b]=n; else n2=mp[b]; gr[n1].push_back(edge(n2, c)); rev_gr[n2].push_back(edge(n1, c)); } int start=mp["BGN"]; dost[start]=1; dfs(start); reverse(podr.begin(), podr.end()); int brv=podr.size(); for(int i=0; i