Skip to content

Commit 399d966

Browse files
first commit
0 parents  commit 399d966

File tree

915 files changed

+54517
-0
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

915 files changed

+54517
-0
lines changed

1-sir.cpp

+32
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
# include <fstream>
2+
# include <algorithm>
3+
# define mod 194767
4+
# define NR 256*257/2+5
5+
using namespace std;
6+
ifstream f("1-sir.in");
7+
ofstream g("1-sir.out");
8+
int i,j,n,m,maxx,S;
9+
int a[NR], b[NR];
10+
int main ()
11+
{
12+
f>>n>>S;
13+
if (n*(n+1)/2<S)
14+
{
15+
g<<"0\n";
16+
return 0;
17+
}
18+
19+
a[0]=1;
20+
for (i=2; i<=n; ++i)
21+
{
22+
maxx=i*(i+1)/2;
23+
for (j=0; j<=maxx; ++j)
24+
b[j]=(a[j+(i-1)]+a[abs(j-(i-1))])%mod;
25+
26+
for (j=0; j<=maxx; ++j)
27+
a[j]=b[j], b[j]=0;
28+
}
29+
g<<a[S]<<"\n";
30+
31+
return 0;
32+
}

2ndesc.cpp

+49
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
# include <fstream>
2+
# include <algorithm>
3+
# define MOD 666013
4+
using namespace std;
5+
ifstream f("2ndesc.in");
6+
ofstream g("2ndesc.out");
7+
int i,j,n,m;
8+
int a[5], M[5][5], mat[5][5];
9+
void inmultire (int a[5][5], int b[5][5])
10+
{
11+
int c[5][5];
12+
for(int i=1; i<=3; ++i)
13+
for (int j=1; j<=3; ++j) c[i][j]=0;
14+
15+
for (int i=1; i<=3; ++i) //linie a
16+
for (int j=1; j<=3; ++j) //coloana b
17+
for (int k=1; k<=3; ++k) //parcurgere
18+
c[i][j]=(1LL*c[i][j] + 1LL*a[i][k]*b[k][j])%MOD;
19+
20+
for (int i=1; i<=3; ++i)
21+
for (int j=1; j<=3; ++j)
22+
a[i][j]=c[i][j];
23+
24+
}
25+
int main ()
26+
{
27+
f>>n;
28+
a[1]=1; a[2]=2; a[3]=4;
29+
if (n<=3) {g<<a[n]; return 0;}
30+
31+
mat[1][1]=1; mat[2][2]=1; mat[3][3]=1;
32+
M[1][3]=1; M[2][1]=1; M[2][3]=1; M[3][2]=1; M[3][3]=1;
33+
// ridicam logaritmic matricea la puterea n
34+
n=n-3;
35+
while (n) {
36+
if (n%2==1) {
37+
inmultire (mat, M);
38+
--n;
39+
}
40+
else {
41+
inmultire (M, M);
42+
n=n/2;
43+
}
44+
}
45+
g<<(mat[1][3] + 2*mat[2][3] + 4*mat[3][3])%MOD<<"\n";
46+
47+
48+
return 0;
49+
}

3secv.cpp

+23
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
# include <fstream>
2+
# include <algorithm>
3+
using namespace std;
4+
ifstream f("3secv.in");
5+
ofstream g("3secv.out");
6+
int
7+
int main ()
8+
{
9+
f>>n;
10+
for (i=1; i<=n; ++i)
11+
f>>a[i];
12+
13+
14+
for (i=n-1; i>=1; --i)
15+
{
16+
17+
}
18+
19+
20+
21+
22+
return 0;
23+
}

APMD.cpp

+68
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
# include <fstream>
2+
# include <vector>
3+
# include <algorithm>
4+
# include <queue>
5+
# define inf 999999999
6+
using namespace std;
7+
ifstream f("apdm.in");
8+
ofstream g("apdm.out");
9+
queue <int> q;
10+
vector <int> v[155];
11+
int i,j,n,m,x,y,o,maxx,minn,maxim,S;
12+
int tata[155],ap[155],dist[155];
13+
void BF (int k)
14+
{
15+
int i;
16+
dist[k]=0; tata[k]=0; maxx=0;
17+
q.push(k);
18+
while (! q.empty())
19+
{
20+
k=q.front(); q.pop();
21+
if (dist[k]>maxx) maxx=dist[k], S=k;
22+
for (i=0; i<v[k].size(); ++i)
23+
{
24+
if (dist[k]+1<dist[v[k][i]])
25+
{
26+
dist[v[k][i]]=dist[k]+1;
27+
tata[v[k][i]]=k;
28+
q.push(v[k][i]);
29+
}
30+
}
31+
}
32+
}
33+
void DFS (int k, int niv)
34+
{
35+
if (niv>maxim) maxim=niv;
36+
ap[k]=1;
37+
for (int i=0; i<v[k].size(); ++i)
38+
{
39+
if (!ap[v[k][i]] && (tata[v[k][i]]==k || v[k][i]==tata[k]))
40+
{
41+
DFS (v[k][i], niv+1);
42+
}
43+
}
44+
}
45+
int main ()
46+
{
47+
f>>n>>m;
48+
for (i=1; i<=m; ++i)
49+
{
50+
f>>x>>y;
51+
v[x].push_back(y);
52+
v[y].push_back(x);
53+
}
54+
minn=inf;
55+
for (o=1; o<=n; ++o)
56+
{
57+
for (j=1; j<=n; ++j)
58+
dist[j]=inf,ap[j]=0;
59+
BF (o);
60+
61+
maxim=0;
62+
DFS (S,0);
63+
if (maxim<minn) minn=maxim;
64+
}
65+
g<<minn<<"\n";
66+
67+
return 0;
68+
}

Andrei.cpp

+56
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
# include <fstream>
2+
# include <algorithm>
3+
# include <vector>
4+
using namespace std;
5+
ifstream f("andrei.in");
6+
ofstream g("andrei.out");
7+
struct elem
8+
{
9+
int y, col;
10+
}E;
11+
vector <elem> v[100005];
12+
vector <int> visited;
13+
int i,j,n,m,x,y;
14+
int VV[100005], uz[100005];
15+
int DFS(int k, int tip)
16+
{
17+
int i,nod,col;
18+
if(uz[k])
19+
{
20+
if(VV[k]!=tip) return 0;
21+
return 1;
22+
}
23+
visited.push_back(k); uz[k]=1; VV[k]=tip;
24+
for(i=0; i<v[k].size(); ++i)
25+
{
26+
nod=v[k][i].y; col=v[k][i].col;
27+
if(col==0 && tip==0) { if(! DFS(nod, 1)) return 0; }
28+
if(col==1 && tip==1) { if(! DFS(nod, 0)) return 0; }
29+
if(col==2) { if(! DFS(nod, tip)) return 0; }
30+
}
31+
return 1;
32+
}
33+
int main ()
34+
{
35+
f>>n>>m;
36+
for (i=1; i<=m; ++i)
37+
{
38+
f>>x>>y>>E.col;
39+
E.y=y; v[x].push_back(E);
40+
E.y=x; v[y].push_back(E);
41+
}
42+
for(i=1; i<=n; ++i)
43+
if(!uz[i])
44+
{
45+
if(! DFS(i, 0))
46+
{
47+
for (int o=0; o<visited.size(); ++o) uz[visited[o]]=0;
48+
DFS(i, 1);
49+
}
50+
}
51+
52+
for(i=1; i<=n; ++i)
53+
g<<VV[i]<<" ";
54+
55+
return 0;
56+
}

BMatrix.cpp

+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
#include <cstring>
2+
#include <fstream>
3+
#include <stack>
4+
using namespace std; const int MAX_N = 202; int N, M, sol; int H[MAX_N][MAX_N], D[MAX_N][MAX_N], dp[MAX_N][MAX_N]; char s[MAX_N]; bool A[MAX_N][MAX_N]; void read() { ifstream f("bmatrix.in"); f >> N >> M; for(int i = 1; i <= N; ++i) { f >> s; for(int j = 0; j < M; ++j) if(s[j] == '0') A[i][j + 1] = 1; } f.close(); } void solveLine(int line, int v[], int n) { stack < pair < int, int > > st; for(int i = 1; i <= n; ++i) { if(st.empty() || v[i] > st.top().first) st.push(make_pair(v[i], 1)); else if(st.top().first == v[i]) ++st.top().second; else { int cnt = 0; while(!st.empty() && v[i] < st.top().first) { cnt += st.top().second; int top = st.top().first; st.pop(); H[line][top] = max(H[line][top], cnt); } st.push(make_pair(v[i], cnt + 1)); } } int cnt = 0; while(!st.empty()) { cnt += st.top().second; int top = st.top().first; st.pop(); H[line][top] = max(H[line][top], cnt); } } void compute() { memset(H, 0, sizeof(H)); memset(D, 0, sizeof(D)); for(int i = 1; i <= N; ++i) { for(int j = 1; j <= M; ++j) if(A[i][j]) D[i][j] = D[i - 1][j] + 1; solveLine(i, D[i], M); } for(int i = 1; i <= N; ++i) { for(int j = i; j >= 1; --j) H[i][j] = max(H[i][j], H[i][j + 1]); dp[i][i] = H[i][1]; } for(int h = 1; h < N; ++h) for(int i = 1; i + h <= N; ++i) { int j = i + h; dp[i][j] = max(H[j][j - i + 1] * (j - i + 1), max(dp[i + 1][j], dp[i][j - 1])); } for(int i = 1; i < N; ++i) sol = max(sol, dp[1][i] + dp[i + 1][N]); } void transpose() { int T[MAX_N][MAX_N]; memset(T, 0, sizeof(T)); for(int i = 1; i <= N; ++i) for(int j = 1; j <= M; ++j) T[j][i] = A[i][j]; swap(N, M); memset(A, 0, sizeof(A)); for(int i = 1; i <= N; ++i) for(int j = 1; j <= M; ++j) A[i][j] = T[i][j]; } void solve() { compute(); transpose(); compute(); } void write() { ofstream g("bmatrix.out"); g << sol << "\n"; g.close(); } int main() { read(); solve(); write(); return 0; }

Bellman Ford cu BFS.cpp

+52
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
# include <fstream>
2+
# include <vector>
3+
# include <queue>
4+
# include <algorithm>
5+
# define inf 1000000000
6+
using namespace std;
7+
ifstream f("dijkstra.in");
8+
ofstream g("dijkstra.out");
9+
struct elem
10+
{
11+
int y,val;
12+
}X,Y;
13+
vector <elem> v[50005];
14+
queue <int> q;
15+
int i,j,n,m,x,y;
16+
int dist[50005];
17+
void BFS ()
18+
{
19+
int k,i;
20+
q.push(1);
21+
while (!q.empty())
22+
{
23+
k=q.front (); q.pop();
24+
for (i=0; i<v[k].size(); ++i)
25+
{
26+
if (dist[v[k][i].y]>dist[k]+v[k][i].val)
27+
{
28+
dist[v[k][i].y]=dist[k]+v[k][i].val;
29+
q.push(v[k][i].y);
30+
}
31+
}
32+
}
33+
}
34+
int main ()
35+
{
36+
f>>n>>m;
37+
for (i=2; i<=n; ++i)
38+
dist[i]=inf;
39+
for (i=1; i<=m; ++i)
40+
{
41+
f>>x>>X.y>>X.val;
42+
v[x].push_back(X);
43+
}
44+
BFS();
45+
for (i=2; i<=n; ++i)
46+
{
47+
if (dist[i]==inf) g<<"0 ";
48+
else g<<dist[i]<<" ";
49+
}
50+
51+
return 0;
52+
}

CT.cpp

+88
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
# include <fstream>
2+
# include <algorithm>
3+
# include <cstring>
4+
# include <vector>
5+
# define NR 100005
6+
using namespace std;
7+
ifstream f("ct.in");
8+
ofstream g("ct.out");
9+
vector <int> v[NR];
10+
int i,j,n,m,x,y,sol,K,teste;
11+
int stiva[NR], niv[NR], T[NR][20], marcat[NR], lg[NR];
12+
struct elem {
13+
int x, y, lca;
14+
}Q[NR];
15+
bool cmp (elem x, elem y) {
16+
return niv[x.lca] > niv[y.lca];
17+
}
18+
void logaritmi () {
19+
for (int i=2; i<=100000; ++i)
20+
lg[i]=lg[i/2] + 1;
21+
}
22+
void DFS (int k, int tata, int nivel) {
23+
niv[k]=nivel; stiva[nivel]=k;
24+
//facem vecinii lui de la 2^i numvele in sus
25+
for (int i=0; i<=lg[n] && (1<<i) < nivel; ++i)
26+
T[k][i]=stiva[nivel - (1<<i)];
27+
28+
for (int i=0; i<v[k].size(); ++i)
29+
if (v[k][i]!=tata) DFS (v[k][i], k, nivel+1);
30+
}
31+
int LCA (int X, int Y) {
32+
if (niv[Y] > niv[X]) swap(X, Y);
33+
// le aduc pe acelasi nivel
34+
for (int j=lg[n]; j>=0 && niv[X]!=niv[Y]; --j)
35+
if (niv[X] - (1<<j) >= niv[Y]) X=T[X][j];
36+
37+
if (X==Y) return X;
38+
// urc simultan cu ele
39+
for (int j=lg[n]; j>=0; --j)
40+
if (T[X][j] != T[Y][j]) X=T[X][j], Y=T[Y][j];
41+
42+
return T[X][0];
43+
}
44+
void marcheaza (int k) {
45+
marcat[k]=1;
46+
for (int i=0; i<v[k].size(); ++i)
47+
if (! marcat[v[k][i]] && v[k][i]!=T[k][0])
48+
marcheaza (v[k][i]);
49+
}
50+
void init () {
51+
for (int i=1; i<=n; ++i) {
52+
v[i].clear ();
53+
marcat[i]=0; niv[i]=0;
54+
for (int j=0; j<=lg[n]; ++j)
55+
T[i][j]=0;
56+
}
57+
}
58+
int main ()
59+
{
60+
logaritmi (); f>>teste;
61+
for (int t=1; t<=teste; ++t) {
62+
f>>n>>K; init ();
63+
64+
for (i=1; i<n; ++i) {
65+
f>>x>>y;
66+
v[x].push_back(y);
67+
v[y].push_back(x);
68+
}
69+
DFS (1, 0, 1);
70+
71+
for (i=1; i<=K; ++i) {
72+
f>>Q[i].x>>Q[i].y;
73+
Q[i].lca=LCA (Q[i].x, Q[i].y);
74+
}
75+
76+
sort (Q+1, Q+K+1, cmp);
77+
sol=0;
78+
for (i=1; i<=K; ++i)
79+
if (! marcat[Q[i].x] && ! marcat[Q[i].y]) { // un nou punct
80+
++sol;
81+
marcheaza (Q[i].lca);
82+
}
83+
84+
g<<sol<<"\n";
85+
}
86+
87+
return 0;
88+
}

0 commit comments

Comments
 (0)