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 a580a6d

Browse files
Added problems
1 parent cfc10f3 commit a580a6d

File tree

3 files changed

+167
-0
lines changed

3 files changed

+167
-0
lines changed

‎graph_algorithms/game-routes-dfs.cpp‎

Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
// Got a TLE
2+
3+
#include <bits/stdc++.h>
4+
5+
using namespace std;
6+
7+
typedef long long int lli;
8+
typedef vector<lli> vi;
9+
10+
lli mod = 1e9 + 7;
11+
12+
class Graph
13+
{
14+
15+
vector<vi> adj;
16+
lli nodes;
17+
lli routes;
18+
19+
public:
20+
Graph(lli _nodes)
21+
{
22+
adj.resize(_nodes, vi{});
23+
nodes = _nodes;
24+
routes = 0;
25+
}
26+
27+
void addEdge(lli src, lli dst)
28+
{
29+
src--;
30+
dst--;
31+
if (find(adj[src].begin(), adj[src].end(), dst) == adj[src].end())
32+
{
33+
adj[src].emplace_back(dst);
34+
}
35+
}
36+
37+
void dfs(lli node)
38+
{
39+
if (node == nodes - 1)
40+
{
41+
routes = (routes + 1) % mod;
42+
return;
43+
}
44+
45+
for (auto nxt : adj[node])
46+
{
47+
dfs(nxt);
48+
}
49+
}
50+
51+
void solve()
52+
{
53+
dfs(0);
54+
cout << routes % mod << '\n';
55+
}
56+
};
57+
58+
void task()
59+
{
60+
61+
lli numLevels, numTeleporters;
62+
cin >> numLevels >> numTeleporters;
63+
Graph g(numLevels);
64+
lli a, b;
65+
for (lli i = 0; i < numTeleporters; i++)
66+
{
67+
cin >> a >> b;
68+
g.addEdge(a, b);
69+
}
70+
g.solve();
71+
}
72+
73+
int main()
74+
{
75+
76+
ios::sync_with_stdio(false);
77+
cin.tie(NULL);
78+
79+
task();
80+
81+
return 0;
82+
}

‎graph_algorithms/game-routes-dp.cpp‎

Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
#include <bits/stdc++.h>
2+
3+
using namespace std;
4+
5+
typedef long long int lli;
6+
typedef vector<lli> vi;
7+
8+
lli mod = 1e9 + 7;
9+
10+
class Graph
11+
{
12+
13+
vector<vi> adj;
14+
vi dp;
15+
vector<bool> visited;
16+
lli nodes;
17+
lli routes;
18+
19+
public:
20+
Graph(lli _nodes)
21+
{
22+
adj.resize(_nodes, vi{});
23+
dp.resize(_nodes, 0);
24+
visited.resize(_nodes, false);
25+
nodes = _nodes;
26+
routes = 0;
27+
}
28+
29+
void addEdge(lli src, lli dst)
30+
{
31+
src--;
32+
dst--;
33+
if (find(adj[src].begin(), adj[src].end(), dst) == adj[src].end())
34+
{
35+
adj[src].emplace_back(dst);
36+
}
37+
}
38+
39+
void dfs(lli node)
40+
{
41+
dp[node] = node == nodes - 1 ? 1 : 0;
42+
visited[node] = true;
43+
44+
for (auto nxt : adj[node])
45+
{
46+
if (!visited[nxt])
47+
{
48+
dfs(nxt);
49+
}
50+
dp[node] = (dp[node] + dp[nxt]) % mod;
51+
}
52+
}
53+
54+
void solve()
55+
{
56+
dfs(0);
57+
cout << dp[0] % mod << '\n';
58+
}
59+
};
60+
61+
void task()
62+
{
63+
64+
lli numLevels, numTeleporters;
65+
cin >> numLevels >> numTeleporters;
66+
Graph g(numLevels);
67+
lli a, b;
68+
for (lli i = 0; i < numTeleporters; i++)
69+
{
70+
cin >> a >> b;
71+
g.addEdge(a, b);
72+
}
73+
g.solve();
74+
}
75+
76+
int main()
77+
{
78+
79+
ios::sync_with_stdio(false);
80+
cin.tie(NULL);
81+
82+
task();
83+
84+
return 0;
85+
}
File renamed without changes.

0 commit comments

Comments
(0)

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