#include <bits/stdc++.h>
using namespace std;
const int maxn = 100;
int mapn[maxn][maxn], dis[maxn];
int in[maxn];
int n, m;
int toposort();
int main()
{
#ifdef ONLINE_JUDGE
#else
freopen("in.txt","r",stdin);
#endif
int i;
memset(mapn, -1, sizeof(mapn));
memset(dis, 0, sizeof(dis));
memset(in, 0, sizeof(in));
cin >> n >> m;
int from, to, cost;
for(i = 0; i < m; i++){
cin >> from >> to >> cost;
mapn[from][to] = cost;
in[to] ++;
}
if(toposort()) cout << "Impossible" << endl;
else{
int maximum = -1;
for(i = 0; i < n; i++){
if(maximum < dis[i]) maximum = dis[i];
}
cout << maximum;
}
return 0;
}
int toposort()
{
queue<int> que;
int cnt = 0;
int i;
for(i = 0; i < n; i++){
if(in[i] == 0) que.push(i);
}
while(!que.empty()){
int v = que.front();
cnt++;
que.pop();
for(i = 0; i < n; i++){
if(mapn[v][i] != -1){
dis[i] = max(dis[i], dis[v] + mapn[v][i]);
if(--in[i] == 0) que.push(i);
}
}
}
if(cnt == n) return 0;
else return 1;
}
PTA 7-12 How Long Does It Take (25 分)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.