Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 189611d

Browse files
Added problems
1 parent 995975f commit 189611d

File tree

3 files changed

+191
-10
lines changed

3 files changed

+191
-10
lines changed

‎graph_algorithms/building_teams.cpp‎

Lines changed: 121 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,121 @@
1+
#include <bits/stdc++.h>
2+
3+
using namespace std;
4+
5+
typedef long int li;
6+
typedef long long int lli;
7+
typedef vector<long long int> vlli;
8+
typedef vector<int> vi;
9+
typedef stack<long long int> slli;
10+
11+
class Graph
12+
{
13+
14+
vector<vector<lli>> adj;
15+
lli nodes;
16+
17+
public:
18+
Graph(lli nodes)
19+
{
20+
this->adj.resize(nodes, vector<lli>{});
21+
this->nodes = nodes;
22+
}
23+
24+
void addDirectedEdge(lli src, lli dst)
25+
{
26+
27+
if (src == dst)
28+
{
29+
return;
30+
}
31+
32+
this->adj[src].emplace_back(dst);
33+
}
34+
35+
void addUndirectedEdge(lli src, lli dst)
36+
{
37+
38+
if (src == dst)
39+
{
40+
return;
41+
}
42+
43+
this->adj[src].emplace_back(dst);
44+
this->adj[dst].emplace_back(src);
45+
}
46+
47+
void checkBipartite()
48+
{
49+
50+
queue<pair<lli, lli>> q;
51+
52+
vector<lli> colors(this->nodes, 0);
53+
54+
for (lli i = 0; i < this->nodes; i++)
55+
{
56+
if (colors[i] == 0)
57+
{
58+
q.push(make_pair(i, 1));
59+
60+
while (!q.empty())
61+
{
62+
63+
auto top = q.front();
64+
q.pop();
65+
colors[top.first] = top.second;
66+
lli nextColor = top.second == 2 ? 1 : 2;
67+
68+
for (auto neighbour : this->adj[top.first])
69+
{
70+
if (colors[neighbour] == 0)
71+
{
72+
q.push({neighbour, nextColor});
73+
}
74+
else if (colors[neighbour] != nextColor)
75+
{
76+
cout << "IMPOSSIBLE\n";
77+
return;
78+
}
79+
}
80+
}
81+
}
82+
}
83+
84+
for (auto team : colors)
85+
{
86+
cout << team << ' ';
87+
}
88+
89+
cout << '\n';
90+
}
91+
};
92+
93+
void task()
94+
{
95+
96+
lli pupils, friendships;
97+
cin>>pupils>>friendships;
98+
99+
Graph g(pupils);
100+
101+
lli a, b;
102+
103+
for(lli i = 0; i < friendships; i++) {
104+
cin>>a>>b;
105+
g.addUndirectedEdge(a-1, b-1);
106+
}
107+
108+
g.checkBipartite();
109+
110+
}
111+
112+
int main()
113+
{
114+
115+
ios::sync_with_stdio(0);
116+
cin.tie(0);
117+
118+
task();
119+
120+
return 0;
121+
}

‎sorting_and_searching/factory_machines.cpp‎

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -17,14 +17,15 @@ void task()
1717
for (lli i = 0; i < lenMachines; i++)
1818
cin >> machines[i];
1919
lli minTime = *min_element(machines.begin(), machines.end());
20-
lli minTimeRequired = minTime * lenProducts;
20+
lli minTimeRequired = minTime * lenProducts + 1;
2121

2222
lli productsCreated = 0;
2323

2424
lli l = 0;
2525
lli r = minTimeRequired;
26+
lli ans = 0;
2627

27-
while (l < r)
28+
while (l <= r)
2829
{
2930

3031
lli m = l + (r - l) / 2;
@@ -36,22 +37,18 @@ void task()
3637
productsCreated += floor(m / machines[i]);
3738
}
3839

39-
if (productsCreated == lenProducts)
40-
{
41-
cout << m << '\n';
42-
return;
43-
}
44-
else if (productsCreated < lenProducts)
40+
if (productsCreated < lenProducts)
4541
{
4642
l = m + 1;
4743
}
4844
else
4945
{
50-
r = m;
46+
ans = m;
47+
r = m - 1;
5148
}
5249
}
5350

54-
cout << l << '\n';
51+
cout << ans << '\n';
5552
}
5653

5754
int main()

‎template_graph.cpp‎

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
#include <bits/stdc++.h>
2+
3+
using namespace std;
4+
5+
typedef long int li;
6+
typedef long long int lli;
7+
typedef vector<long long int> vlli;
8+
typedef vector<int> vi;
9+
typedef stack<long long int> slli;
10+
11+
class Graph {
12+
13+
vector<vector<lli>> adj;
14+
lli nodes;
15+
vector<lli> assigned;
16+
17+
public:
18+
Graph(lli nodes) {
19+
this->adj.resize(nodes, vector<lli>{});
20+
this->nodes = nodes;
21+
this->assigned.resize(nodes, 0);
22+
}
23+
24+
void addDirectedEdge(lli src, lli dst) {
25+
26+
if(src == dst) {
27+
return;
28+
}
29+
30+
this->adj[src].emplace_back(dst);
31+
32+
}
33+
34+
void addUndirectedEdge(lli src, lli dst) {
35+
36+
if(src == dst) {
37+
return;
38+
}
39+
40+
this->adj[src].emplace_back(dst);
41+
this->adj[dst].emplace_back(src);
42+
43+
}
44+
45+
46+
47+
};
48+
49+
void task() {
50+
51+
52+
53+
}
54+
55+
int main() {
56+
57+
ios::sync_with_stdio(0);
58+
cin.tie(0);
59+
60+
task();
61+
62+
return 0;
63+
}

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /