Skip to content

Commit 231e5b3

Browse files
Add files via upload
1 parent ee19b92 commit 231e5b3

File tree

3 files changed

+217
-0
lines changed

3 files changed

+217
-0
lines changed
Lines changed: 101 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,101 @@
1+
#include <iostream>
2+
#include <vector>
3+
#include <algorithm>
4+
#include <map>
5+
6+
using namespace std;
7+
8+
int other(int p)
9+
{
10+
return (p + 1)%2;
11+
}
12+
13+
void dfs(vector < vector <int> > &T, int parent_v, int v, map <pair <int, int>, int> &weight, int parity)
14+
{
15+
for(int child_v : T[v])
16+
{
17+
if(child_v == parent_v)
18+
{
19+
continue;
20+
}
21+
22+
int x = v, y = child_v;
23+
if(x > y)
24+
{
25+
swap(x, y);
26+
}
27+
28+
weight[make_pair(x, y)] = (parity == 0 ? 2 : 3);
29+
30+
dfs(T, v, child_v, weight, other(parity));
31+
}
32+
}
33+
34+
void solve()
35+
{
36+
int no_of_vertices;
37+
cin >> no_of_vertices;
38+
39+
int no_of_edges = no_of_vertices - 1;
40+
vector <pair <int, int> > edges;
41+
vector <vector <int> > tree(no_of_vertices + 1);
42+
for(int i = 1; i <= no_of_edges; i++)
43+
{
44+
int u, v;
45+
cin >> u >> v;
46+
47+
tree[u].push_back(v);
48+
tree[v].push_back(u);
49+
50+
if(u > v)
51+
{
52+
swap(u, v);
53+
}
54+
55+
edges.push_back(make_pair(u, v));
56+
}
57+
58+
int possible = true;
59+
int root = 1;
60+
for(int i = 1; i <= no_of_vertices; i++)
61+
{
62+
if(tree[i].size() >= 3)
63+
{
64+
possible = false;
65+
break;
66+
}
67+
68+
if(tree[i].size() == 1)
69+
{
70+
root = i;
71+
}
72+
}
73+
74+
if(!possible)
75+
{
76+
cout << "-1\n";
77+
return;
78+
}
79+
80+
map <pair <int, int>, int > edge_weight;
81+
dfs(tree, 0, root, edge_weight, 0);
82+
83+
for(pair <int, int> edge : edges)
84+
{
85+
cout << edge_weight[edge] << " ";
86+
}
87+
cout << "\n";
88+
}
89+
90+
int main()
91+
{
92+
int no_of_test_cases;
93+
cin >> no_of_test_cases;
94+
95+
while(no_of_test_cases--)
96+
solve();
97+
98+
return 0;
99+
}
100+
101+
Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
#include <iostream>
2+
#include <vector>
3+
4+
using namespace std;
5+
6+
void solve()
7+
{
8+
int rows, columns, x, y;
9+
cin >> rows >> columns >> x >> y;
10+
11+
vector <string> grid(rows);
12+
for(int i = 0; i < rows; i++)
13+
{
14+
cin >> grid[i];
15+
}
16+
x--;
17+
y--;
18+
19+
int answer = -1;
20+
21+
int black_count = 0, black_row_count = 0, black_column_count = 0;
22+
for(int r = 0; r < rows; r++)
23+
{
24+
for(int c = 0; c < columns; c++)
25+
{
26+
if(grid[r][c] == 'B')
27+
{
28+
black_count++;
29+
30+
if(r == x)
31+
{
32+
black_row_count++;
33+
}
34+
35+
if(c == y)
36+
{
37+
black_column_count++;
38+
}
39+
}
40+
}
41+
}
42+
43+
if(grid[x][y] == 'B')
44+
{
45+
answer = 0;
46+
}
47+
else if(black_row_count > 0 || black_column_count > 0)
48+
{
49+
answer = 1;
50+
}
51+
else if(black_count > 0)
52+
{
53+
answer = 2;
54+
}
55+
else
56+
{
57+
answer = -1;
58+
}
59+
60+
cout << answer << "\n";
61+
}
62+
63+
int main()
64+
{
65+
int no_of_test_cases;
66+
cin >> no_of_test_cases;
67+
68+
while(no_of_test_cases--)
69+
solve();
70+
71+
return 0;
72+
}
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
#include <iostream>
2+
#include <vector>
3+
#include <algorithm>
4+
5+
using namespace std;
6+
7+
void solve()
8+
{
9+
int rows, columns;
10+
cin >> rows >> columns;
11+
12+
vector <int> distances;
13+
int row_distance = 0, column_distance = 0;
14+
for(int r = 1; r <= rows; r++)
15+
{
16+
for(int c = 1; c <= columns; c++)
17+
{
18+
row_distance = max(rows - r, r - 1);
19+
column_distance = max(columns - c, c - 1);
20+
distances.push_back(row_distance + column_distance);
21+
}
22+
23+
}
24+
25+
sort(distances.begin(), distances.end());
26+
27+
for(int d : distances)
28+
{
29+
cout << d << " ";
30+
}
31+
cout << "\n";
32+
}
33+
34+
int main()
35+
{
36+
int no_of_test_cases;
37+
cin >> no_of_test_cases;
38+
39+
while(no_of_test_cases--)
40+
solve();
41+
42+
return 0;
43+
}
44+

0 commit comments

Comments
 (0)