// P4878 [USACO05DEC] Layout G
#include<bits/stdc++.h>
const int MAXN=1005;
typedef std::pair<int,int> PII;
typedef long long LL;
const LL INF=(1LL<<31);
int n,M_l,M_d,cnt[MAXN];
LL dis[MAXN];
bool vis[MAXN];
std::vector<PII> e[MAXN];
inline void add(int u,int v,int w)
{ e[u].push_back(std::make_pair(v,w)); }
inline bool spfa(int s)
{
std::fill(vis,vis+n+1,0),
std::fill(cnt,cnt+n+1,0),
std::fill(dis,dis+n+1,INF);
dis[s]=0,vis[s]=1;
std::queue<int> q;
q.push(s);
while(q.size())
{
int u=q.front();
q.pop();
vis[u]=0;
for(auto it:e[u])
{
int v=it.first,w=it.second;
if(dis[v]>dis[u]+w)
{
dis[v]=dis[u]+w;
if(!vis[v])
{
vis[v]=1,cnt[v]=cnt[u]+1;
if(cnt[v]>=n) return 0;
q.push(v);
}
}
}
}
return 1;
}
int main()
{
scanf("%d%d%d",&n,&M_l,&M_d);
for(int i=1;i<=n;i++) add(0,i,0);
for(int _=1,u,v,w;_<=M_l;_++)
{
scanf("%d%d%d",&u,&v,&w);
add(u,v,w);
}
for(int _=1,u,v,w;_<=M_d;_++)
{
scanf("%d%d%d",&u,&v,&w);
add(v,u,-w);
}
if(!spfa(0)) printf("-1\n");
else if(!spfa(1)) printf("-1\n");
else printf("%d\n",(dis[n]==INF?-2:dis[n]));
return 0;
}
回复请 at 我。