View difference between Paste ID: sRsrZvKB and uzKM7vgH
SHOW: | | - or go back to the newest paste.
1
#include "stdafx.h"
2
#include <stdlib.h>
3
#include <cstdlib>
4
#include <iostream>
5
#include <time.h>
6
#include <Windows.h>
7
#include <string>
8
#define threadCount 4
9
10
#define random() (float)rand()/(float)RAND_MAX
11
#define nmax 20
12
CRITICAL_SECTION sekcja;
13-
CRITICAL_SECTION sekcja;
13+
using namespace std;
14-
using namespace std;
14+
    typedef int t2[nmax][nmax];
15-
    typedef int t2[nmax][nmax];
15+
    typedef int t1[nmax];
16-
    typedef int t1[nmax];
16+
17
void permInit(int n, t1 p)
18-
    void gnp(int n, float p, t2 A)
18+
19
    int i;
20-
int i,j;
20+
    for (i=0;i<n;i++)
21-
for (i=0;i<n;i++) A[i][i] = 0;
21+
        p[i]=i;
22-
                                  for (i=0;i<n1;i++)
22+
23-
                                      for (j=i+1;j<n;j++)
23+
24
int permNext(int n, t1 p)
25-
            A[i][j]=A[j][i]= (random() <= p);
25+
26
    int i,j,x,b;
27
    b=0;
28
      i=n1;
29
        while (i>0)
30
    {
31-
    int i;
31+
32-
    for (i=0;i<n;i++)
32+
33-
        p[i]=i;
33+
            j=n1;
34
              while (p[j] < p[i1])
35
                  j;
36
                  x=p[j];
37
                    p[j]=p[i1]
38-
    int i;
38+
                         ;
39-
    printf("%d: ",L);
39+
40-
    for (i=0;i<n;i++)
40+
                             x;
41-
        printf("%d ",p[i]);
41+
42-
        printf("\n");
42+
43
                    x=p[i]; p[i]=p[n1]
44
                                  ; p[n1]=
45
                                      x;
46
                                      i++; n;
47-
    int i,j,x,b;
47+
                };
48-
    b=0;
48+
            b=1;
49-
      i=n1;
49+
              break;
50
        }
51
        i;
52
    }
53
    return b;
54-
            j=n1;
54+
55
void druk(int n, int L, t1 p)
56-
56+
57-
                  x=p[j];
57+
    int i;
58
    printf("%d: ",L);
59-
                         ;
59+
    for (i=0;i<n;i++)
60
        printf("%d ",p[i]);
61-
61+
        printf("\n");
62
    }
63
    
64-
                    x=p[i]; p[i]=p[n1]
64+
void gnp(int n, float p, t2 A)
65-
                                  ; p[n1]=
65+
66-
66+
int i,j;
67-
                                      i++; n;
67+
for (i=0;i<n;i++) A[i][i] = 0;
68-
68+
                                  for (i=0;i<n1;i++)
69-
            b=1;
69+
                                      for (j=i+1;j<n;j++)
70-
              break;
70+
71
            A[i][j]=A[j][i]= (random() <= p);
72-
72+
73
}
74-
    return b;
74+
75
int maxDiffrence(int n, t2 A, t1 perm)
76
{
77
    int dist, best = 1;
78
                     int i,j;
79-
    int dist, best = 1;
79+
                     for (i=0;i<n1;i++)
80-
                     int i,j;
80+
                         for (j=i+1;j<n;j++) if (A[i][j])
81-
                     for (i=0;i<n1;i++)
81+
82-
                         for (j=i+1;j<n;j++) if (A[i][j])
82+
83
                               j]);
84
                       if (dist>best) best = dist;
85-
                               j]);
85+
86-
                       if (dist>best) best = dist;
86+
    return best;
87
}
88-
    return best;
88+
float p = 0.5f;
89
          t2 A;
90-
float p = 0.5f;
90+
          t1 perm;
91-
          t2 A;
91+
          int n = 5;
92-
          t1 perm;
92+
                  int naj_r,szerokosc;
93-
          int n = 5;
93+
                  int L = 1;
94-
                  int naj_r,szerokosc;
94+
                          int* wyniki;
95-
                  int L = 1;
95+
96-
                          int* wyniki;
96+
97
    t1 permtemp;
98
    int x = (int)i;
99-
    t1 permtemp;
99+
            for (int j =1;j<n;j++)
100-
    int x = (int)i;
100+
101-
            for (int j =1;j<n;j++)
101+
        permtemp[j] = perm[j];
102
    }
103-
        permtemp[j] = perm[j];
103+
    permtemp[0] = x;
104
                  permtemp[x] = 0;
105-
    permtemp[0] = x;
105+
                                int temp = 0;
106-
                  permtemp[x] = 0;
106+
                                           for (int k = 1;k<n;k++)
107-
                                int temp = 0;
107+
108-
                                           for (int k = 1;k<n;k++)
108+
        for (int l = 1;l<n1;l++)
109
        {
110-
        for (int l = 1;l<n1;l++)
110+
111
            {
112
                temp = permtemp[l];
113
                       permtemp[l] = permtemp[l+1];
114-
                temp = permtemp[l];
114+
                                     permtemp[l+1] = temp;
115-
                       permtemp[l] = permtemp[l+1];
115+
116-
                                     permtemp[l+1] = temp;
116+
117
    }
118
    int max;
119
    do
120-
    int max;
120+
121
        if (permtemp[0]!=x) break;
122
            max = maxDiffrence(n,A,permtemp);
123-
        if (permtemp[0]!=x) break;
123+
                  if (max<szerokosc) szerokosc = max;
124-
            max = maxDiffrence(n,A,permtemp);
124+
                                                     printf("Watek %d: ",x);
125-
                  if (max<szerokosc) szerokosc = max;
125+
                                                     druk(n,L,permtemp);
126-
                                                     printf("Watek %d: ",x);
126+
                                                     L++;
127-
                                                     druk(n,L,permtemp);
127+
128-
                                                     L++;
128+
    while (permNext(n,permtemp));
129
        wyniki[x] = szerokosc;
130-
    while (permNext(n,permtemp));
130+
                    return 0;
131-
        wyniki[x] = szerokosc;
131+
132-
                    return 0;
132+
133
void count ()
134
{
135
    wyniki = new int[n];
136
    HANDLE *threads = new HANDLE [n];
137-
    wyniki = new int[n];
137+
    for (int i = 0; i<n ;i++)
138-
    HANDLE *threads = new HANDLE [n];
138+
139-
    for (int i = 0; i<n ;i++)
139+
        threads[i] = CreateThread( NULL, 0, countPartially, (LPVOID) i,0,NULL);
140
    }
141-
        threads[i] = CreateThread( NULL, 0, countPartially, (LPVOID) i,0,NULL);
141+
    WaitForMultipleObjects((DWORD)n,threads,true,INFINITE);
142
    delete threads;
143-
    WaitForMultipleObjects((DWORD)n,threads,true,INFINITE);
143+
144-
    delete threads;
144+
145
int _tmain(int argc, _TCHAR* argv[])
146
{
147
    gnp(n,p,A);
148
    szerokosc = n1;
149-
    gnp(n,p,A);
149+
                permInit(n,perm);
150-
    szerokosc = n1;
150+
                count();
151-
                permInit(n,perm);
151+
                int min = n;
152-
                count();
152+
                          for (int i = 0;i<n;i++)
153-
                int min = n;
153+
154-
                          for (int i = 0;i<n;i++)
154+
        if (wyniki[i]< min) min = wyniki[i];
155
        }
156-
        if (wyniki[i]< min) min = wyniki[i];
156+
    printf("\nSzerokosc grafu %d\n\n\n",min);
157
    system("pause");
158-
    printf("\nSzerokosc grafu %d\n\n\n",min);
158+
    return 0;
159-
    system("pause");
159+