Given an undirected graph with a source node s and a sink node t. The anti-risk path problem is defined as the problem of finding a path between node s to node t with the least risk under the assumption that at most one edge of each path may be blocked. Xiao et al. (J Comb Optim 17:235–246, 2009) defined the problem and presented an O(mn + n2 log n) time algorithm to find an anti-risk path, where n and m are the number of nodes and edges, respectively. Recently,Mahadeokar and Saxena (J Comb Optim 27:798–807, 2014) solved the problem in O(m + n log n) time. In this paper, first, a new version of the anti-risk path (called contra-risk path) is defined, which is more effective than an anti-risk path in many networks. Then, an algorithm