Блог пользователя samudra_mitra

Автор samudra_mitra, история, 17 месяцев назад, По-английски

Hello Codeforces, this is my first blog and here I have given my solution of the complete CSES Graph Algorithms section. This is the github repo where I have pushed all the cpp files:

Counting Rooms

Thinking
Code

Labyrinth

Thinking
Code

Building Roads

Thinking
Code

Message Route

Thinking
Code

Building Teams

Thinking
Code

Round Trip

Thinking
Code

Monsters

Thinking
Code

Shortest Routes I

Thinking
Code

Shortest Routes II

Thinking
Code

High Score

Thinking
Code

Flight Discount

Thinking
Code

Cycle Finding

Thinking
Code

Flight Routes

Thinking
Code

Round Trip II

Thinking
Code

Course Schedule

Thinking
Code

Longest Flight Route

Thinking
Code

Game Routes

Thinking
Code

Investigation

Thinking
Code

Planet Queries I

Thinking
Code

Planet Queries II

Thinking
Code

Planet Cycles

Thinking
Code

Road Reparation

Thinking
Code

Road Construction

Thinking
Code

Flight Routes Check

Thinking
Code

Planets and Kingdoms

Thinking
Code

Giant Pizza

Thinking
Code

Coin Collector

Thinking
Code

Mail Delivery

Thinking
Code

De Bruijn Sequence

Thinking
Code

Teleporters Path

Thinking
Code

Hamiltonian Flights

Thinking
Code

Knight's Tour

Thinking
Code

Download Speed

Thinking
Code

Police Chase

Thinking
Code

School Dance

Thinking
Code

Distinct Routes

Thinking
Code

I hope that you will find these helpful, and will also find it in your hearts to forgive any mistake which might have crept in unknowingly. Also, any feedback is welcome.

Peace!!

  • Проголосовать: нравится
  • +68
  • Проголосовать: не нравится

»
17 месяцев назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Auto comment: topic has been updated by samudra_mitra (previous revision, new revision, compare).

»
17 месяцев назад, # |
  Проголосовать: нравится +2 Проголосовать: не нравится

Sugoi! ^⁠_⁠^

»
17 месяцев назад, # |
  Проголосовать: нравится +1 Проголосовать: не нравится

Thanks 。⁠◕⁠‿⁠◕⁠。

»
17 месяцев назад, # |
  Проголосовать: нравится +1 Проголосовать: не нравится

cool

»
17 месяцев назад, # |
  Проголосовать: нравится +1 Проголосовать: не нравится

Great job!

»
17 месяцев назад, # |
Rev. 3   Проголосовать: нравится +1 Проголосовать: не нравится

Nicely compiled, thanks

»
17 месяцев назад, # |
Rev. 3   Проголосовать: нравится +1 Проголосовать: не нравится

It is a helpful initiative,thanks. :)

»
16 месяцев назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Good job!, I found them very helpful in my learning of Graph algorithms. Can you please update it to detailed version, because I can't understand some of them fully.

Sorry for bad english :)

»
13 месяцев назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Refer this video for easy implementation of round trip problem:-https://www.youtube.com/watch?v=KSEZ8BbIyHs&t=2s

»
10 месяцев назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

I think there's a mistake on building teams you said you used bfs but in the code you used dfs.

»
6 месяцев назад, # |
Rev. 2   Проголосовать: нравится +3 Проголосовать: не нравится

In the problem Mail Delivery the stack part can be replaced with the following recursive code --

void dfs(int root){
	while(adj[root].size()){
		int m = adj[root].size();
		int it = *adj[root].begin();

		adj[root].erase(it);
		adj[it].erase(root);
		dfs(it);
	}

	path.pb(root);
}

The logic is the same as the stack method. Complete Code — https://ideone.com/FBA8MQ

»
6 месяцев назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Please include more detailed explanation.

»
4 месяца назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

In your solution for Download Speed in the adjacency matrix creation loop:

for (ll i = 0; i < m; i++)
    {
        ll x, y, w;
        cin >> x >> y >> w;
        if (adj[x][y] == -1)
        {
            adj[x][y] = 0;
        }
        adj[x][y] += w;
        adj[y][x] = 0; // THIS LINE GIVES ERROR FOR SOME CASES
        sum += w;
    }

There can be cases where the reverse edge(y->x) is also given in the input and this line will make the edgeweight of other edge(x->y) zero even if it was non-zero before. There are 3 test-cases #16, #17 and #18 which give wrong answer because of this.

It should be changed to :

if(adj[y][x]==-1) adj[y][x] = 0; 
//This ensure edge is only changed if it was initially absent

This passed all the test cases