TouchStone
  Please Login
Login Sign Up
距离明年CSP第一轮: ??天 距离CSP第二轮: ??天 距离NOIP还有: ??天
 Homepage  Problem Set  Examinations  Submissions  Discussions  Statistics
  • Home
  • Problem Set
  • P1103
  • Problem
  • P1103负权回路
    Limits : Time Limit : 50000 MS   Memory Limit : 65536 KB
    Description

    输入数据给出一个有N(2 <= N <= 1,000)个节点,M(M <= 100,000)条边的带权有向图.
    给出一个起点S(1 <= S <= N)
    如果从S点沿着某条路径出发, 又回到了自己, 而且所经过的边上的权和小于0, 就说这条路是一个负权回路.
    如果存在负权回路, 只输出一行-1;
    如果不存在负权回路, 求出点S(1 <= S <= N)到每个点的最短路的长度. 约定: S到S的距离为0, 如果S与这个点不连通, 则输出NoPath.

    Input Format

    第一行: 点数N(2 <= N <= 1,000), 边数M(M <= 100,000), 源点S(1 <= S <= N);
    以下M行, 每行三个整数a, b, c表示点a, b(1 <= a, b <= N)之间连有一条边, 权值为c(-1,000,000 <= c <= 1,000,000)

    Output Format

    共N行, 第i行描述S点到点i的最短路:
    如果S与i不连通, 输出“NoPath”;
    如果i = S, 输出0;
    其他情况输出S到i的最短路的长度.

    Sample Input

    6 8 1
    1 3 4
    1 2 6
    3 4 -7
    6 4 2
    2 4 5
    3 6 3
    4 5 1
    3 5 4

    Sample Output

    0
    6
    4
    -3
    -2
    7

    Hint

    给long long 类型变量赋值时,如果超过了int范围,最后要加上"LL" long long inf=1000000000000LL;