Codeforces Round #111 (Div. 2)--Edges in MST Kruskal+求桥(有重边)

D. Edges in MST

time limit per test

2 seconds

memory limit per test

256 megabytes

input

standard input

output

standard output

You are given a connected weighted undirected graph without any loops and multiple edges.

Let us remind you that a graph's spanning tree is defined as an acyclic connected subgraph of the given graph that includes all of the graph's vertexes. The weight of a tree is defined as the sum of weights of the edges that the given tree contains. The minimum spanning tree (MST) of a graph is defined as the graph's spanning tree having the minimum possible weight. For any connected graph obviously exists the minimum spanning tree, but in the general case, a graph's minimum spanning tree is not unique.

Your task is to determine the following for each edge of the given graph: whether it is either included in any MST, or included at least in one MST, or not included in any MST.

Input

The first line contains two integers n and m (2 ≤ n ≤ 105, ) — the number of the graph's vertexes and edges, correspondingly. Then follow m lines, each of them contains three integers — the description of the graph's edges as "ai bi wi" (1 ≤ ai, bi ≤ n, 1 ≤ wi ≤ 106, ai ≠ bi), where ai and bi are the numbers of vertexes connected by the i-th edge, wi is the edge's weight. It is guaranteed that the graph is connected and doesn't contain loops or multiple edges.

Output

Print m lines — the answers for all edges. If the i-th edge is included in any MST, print "any"; if the i-th edge is included at least in one MST, print "at least one"; if the i-th edge isn't included in any MST, print "none". Print the answers for the edges in the order in which the edges are specified in the input.

Examples

input

Copy

4 5
1 2 101
1 3 100
2 3 2
2 4 2
3 4 1

output

Copy

none
any
at least one
at least one
any

input

Copy

3 3
1 2 1
2 3 1
1 3 2

output

Copy

any
any
none

input

Copy

3 3
1 2 1
2 3 1
1 3 1

output

Copy

at least one
at least one
at least one

Note

In the second sample the MST is unique for the given graph: it contains two first edges.

In the third sample any two edges form the MST for the given graph. That means that each edge is included at least in one MST.

给定无向图,问,每一条边是否

1、不在任何一个最小生成树中

2、至少在一个最小生成树中

3、在所有的最小生成树中

思路:

利用kruskal思想,按边的权值排序,并查集维护,若对于某条边,两个端点已经在并查集中,则其是1情况

否则,若有几条长度相同的边,他们至少在一个最小生成树中,然后再判断是否是在所有的最小生成树中。

利用求桥的方法,每次利用长度相同的边,用端点的fx,fy  加边,进行求桥,求桥的时候标记桥。

求完桥之后清空每次建的图   dfn[fx]=dfn[fy]=_next[fx]=_next[fy]=low[fx]=low[fy]=0; //去边

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值