#include <map>
#include <set>
#include <list>
#include <queue>
#include <deque>
#include <stack>
#include <string>
#include <time.h>
#include <cstdio>
#include <math.h>
#include <iomanip>
#include <cstdlib>
#include <limits.h>
#include <string.h>
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
#define LL long long
#define MIN INT_MIN
#define MAX INT_MAX
#define PI acos(-1.0)
#define FRE freopen("input.txt","r",stdin)
#define FF freopen("output.txt","w",stdout)
#define N 1005
struct node{
int y,w;
};
vector<node> v[N];
int n,m;
int tt[N];
int in[N];
void init () {
int i;
for (i = 0; i <= n; i++ ) v[i].clear();
}
void gao () {
int i,j;
queue<int> qq;
for (i = 0 ; i < n ; i++) {
tt[i] = 0;
if (!in[i]) {
qq.push(i);
tt[i] = 1;
}
}
while (!qq.empty()) {
int x = qq.front();
qq.pop();
for (i = 0; i < v[x].size(); i++) {
node tmp = v[x][i];
int y = tmp.y;
tt[y] = max(tt[y],tt[x] + tmp.w);
in[y]--;
if (!in[y]) {
qq.push(y);
}
}
}
int ans = 0;
for (i = 0; i < n; i++) {
ans = max(ans,tt[i]);
}
printf("%d\n",ans);
}
int main () {
while (scanf("%d%d",&n,&m) != EOF) {
int i,j;
init();
memset(in,0,sizeof(in));
for (i = 0; i < m; i++) {
int a,b,c;
scanf("%d%d%d",&a,&b,&c);
in[b]++;
node tmp;
tmp.y = b;
tmp.w = c;
v[a].push_back(tmp);
}
gao();
}
return 0;
}
【关键路径】hdu 4109
最新推荐文章于 2020-03-27 17:20:19 发布