Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "Annalib.h"
- #define ull unsigned long long
- #define INF 4000000000000000000LL
- #include<stdio.h>
- static ull w[301][301];
- static bool v[90010];
- static int R[61], cnt[5];
- static int hc[62][6];
- void Anna(int N, int M, int A[], int B[], long long C[], int Q, int S[], int T[], int K, int U[]) {
- int i, j, k, x, y, xx, yy;
- ull g;
- for (i = 0; i < K; i++){
- v[U[i]] = true;
- }
- for (i = 0; i < Q; i++)R[i] = -1;
- for (i = 0; i < N; i++){
- for (j = 0; j < N; j++){
- if (i != j)w[i][j] = INF;
- else w[i][j] = 0;
- }
- }
- for (i = 0; i < M; i++){
- if (!v[i])w[A[i]][B[i]] = C[i];
- }
- for (k = 0; k < N; k++){
- for (i = 0; i < N; i++){
- for (j = 0; j < N; j++){
- if (w[i][j]>w[i][k] + w[k][j])w[i][j] = w[i][k] + w[k][j];
- }
- }
- }
- for (i = 0; i < K; i++){
- x = A[U[i]], y = B[U[i]];
- for (j = 0; j < Q; j++){
- xx = S[j], yy = T[j];
- g = w[xx][x] + w[y][yy] + C[U[i]];
- if (w[xx][yy]>g){
- w[xx][yy] = g;
- R[j] = i;
- }
- }
- }
- for (i = 0; i < Q; i++){
- if (R[i] != -1)cnt[R[i]]++;
- }
- hc[1][0]=1;
- for(i=0;i<=Q+1;i++){
- for(j=0;j<=K;j++){
- if(i!=0){
- hc[i][j]+=hc[i-1][j];
- }
- if(j!=0){
- hc[i][j]+=hc[i][j-1];
- }
- }
- }
- j=0;
- k=Q;
- for (i = 0; i < K; i++){
- k-=cnt[i];
- j+=hc[k][K-i];
- }
- j=hc[Q+1][K]-j;
- for(i=0;j;i++){
- if(j>1){
- Tap(j%2);
- }
- j/=2;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement