| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
Re:bellman ford检查负圈, 注意M是双向边In Reply To:bellman ford检查负圈, 注意M是双向边 Posted by:SmartChen at 2018-10-30 17:34:03 > #include <iostream>
> #include <stdio.h>
> #include <algorithm>
> using namespace std;
> #define MAXN 510
> #define MAXE 5210
>
> int t, n, m, w, i, j, e;
> int d[MAXN], ea[MAXE][3];
>
> bool find_negative_loop(void){
> fill(d, d + n + 2, 0);
> for (i = 0; i < n; i++) {
> for (j = 0; j < e; j++) {
> // printf("%d %d, %d %d %d\n", i, j, d[ea[j][1]], d[ea[j][0]] , d[ea[j][2]]);
> if (d[ea[j][1]] > d[ea[j][0]] + ea[j][2]) {
> d[ea[j][1]] = d[ea[j][0]] + ea[j][2];
> if (i == n - 1)
> return true;
> }
> }
> }
> return false;
> }
>
> int main() {
> scanf("%d", &t);
> while (t-- > 0) {
> scanf("%d %d %d", &n, &m, &w);
> m *= 2;
> e = m + w;
> for (i = 0; i < m; i++) {
> scanf("%d %d %d", &ea[i][0], &ea[i][1], &ea[i][2]);
> i++;
> ea[i][0] = ea[i - 1][1];
> ea[i][1] = ea[i - 1][0];
> ea[i][2] = ea[i - 1][2];
> }
> for (; i < e; i++) {
> scanf("%d %d %d", &ea[i][0], &ea[i][1], &ea[i][2]);
> ea[i][2] = -ea[i][2];
> }
> if (find_negative_loop())
> printf("YES\n");
> else
> printf("NO\n");
> }
> }
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator