// boats.cpp Георги Георгиев (Скелета) // Задача: Най-широки лодки #include #include #include #include #include #include #include using namespace std; const int MaxVertex=1001, MaxPairs=10001; int E[MaxVertex][MaxVertex], Pairs[MaxPairs][2], D[MaxVertex], Pi[MaxVertex], Depth[MaxVertex]; bool Marked[MaxVertex]; int N,M,K,w; void input() { int u,v,w; scanf("%d %d %d", &N, &M, &K); for(int i=1; i<=N; i++) for (int j=1; j<=N; j++) E[i][j]=0; for(int i=1; i<=M; i++) { scanf("%d %d %d", &u, &v, &w); E[u][v]=w; E[v][u]=w; } for(int i=1; i<=K; i++) scanf("%d %d\n",&Pairs[i][1],&Pairs[i][2]); } void CreateMST(int s) { int u,v,w,cnt; for(int i=1; i<=N; i++) { D[i]=0; Pi[i]=-1; Marked[i]=false; Depth[i]=0;} D[s]=INT_MAX; // MaxSpaningTree !! cnt=1; // колко върха са в T (в началото s е в Т) while (cnt<=N) { w=0; u=0; for(int i=1; i<=N; i++) if ((D[i]>w) && (!Marked[i])) {w=D[i]; u=i;} Marked[u]=true; // if (u != s) printf("%d %d %d %d\n",u, Pi[u], D[u], Depth[u]); for(int v=1; v<=N; v++) if ((D[v], а теглата им са d[v], за v \neq s } int WP(int u, int v) { int w; w=INT_MAX; while (Depth[u]>Depth[v]) { if (D[u]Depth[u]) { if (D[v]0) && (D[v]