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

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

Given a connected graph with n nodes and m edges (n, m <= 1e5). There are q queries (q <= 1e5), each has type of (u, d, c) means to color all nodes which have the smallest distance to u <= d color c (d <= 10, c <= 1e5). What is the color of n nodes after q queries.

I can only do smaller subtask when n,m,q <= 2000 with bfs. I do think about solving queries backward and color nodes that are empty but still don't know how to optimize it. Can anyone help me. Thanks.

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

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

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

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

Do you simply want the colors of the nodes after all $$$q$$$ queries? Or find the color of some node after each query.

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

where can I find this question?

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

I think a possible solution may be as follows:

One can convert a operation of "color all nodes with the smallest distance to $$$u$$$ less than or equal to $$$d$$$" to "color all nodes with the smallest distance to $$$v$$$ less than or equal to $$$d-1$$$" for $$$v=u$$$ and all $$$v$$$ adjacent to $$$u$$$. And for all operations with the same $$$u$$$ and $$$d$$$, we only need to consider the last one.

Thus if we take all operations offline, we can convert the problem with $$$d\leq D$$$ to the problem with $$$d\leq D-1$$$ in $$$O(n+m)$$$ time using the statement above, resulting in a $$$O((n+m)\max d)$$$ solution.

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

    omg thank you so much. At first I did the same but still got TLE, fixed it thanks to your idea "only needs latest (u,d)".