# [CH Round #23] 小 K 的农场

3 3
3 1 2
1 1 3 1
2 2 3 2

Yes

Kpmcup#0

CH Round #23

## 代码 Code

``````#include <stdio.h>
#include <iostream>
#include <cstring>
#include <algorithm>
#include <cmath>
using namespace std;
const int inf=0x7fffffff/27.11;
struct edge
{
int to,next,s;
}e[30005];
int head[10005];
bool used[10005];
int dis[10005];
int i,j,t,n,m,l,r,k,z,y,x,p;
inline void ins(int x,int y,int z)
{
e[++p].to=y;e[p].next=head[x];e[p].s=z;head[x]=p;
}
bool spfa(int x)
{
int i,j,t;
bool b;
used[x]=true;
for (i=head[x];i;i=e[i].next)
{
if (dis[x]+e[i].s<dis[e[i].to])
{
dis[e[i].to]=dis[x]+e[i].s;
if (used[e[i].to]) return false;
else b=spfa(e[i].to);
}
}
used[x]=false;
return true;
}
int main()
{
memset(used,false,sizeof(used));
scanf("%d%d",&n,&m);
for (i=1;i<=n;i++) dis[i]=inf;
p=0;
for (i=1;i<=n;i++) ins(0,i,0);
for (i=1;i<=m;i++)
{
scanf("%d",&t);
if (t==1)
{
scanf("%d%d%d",&x,&y,&z);
ins(x,y,-z);
}
if (t==2)
{
scanf("%d%d%d",&x,&y,&z);
ins(y,x,z);
}
if (t==3)
{
scanf("%d%d",&x,&y);
ins(x,y,0);
ins(y,x,0);
}
}
if (spfa(0)==false) printf("No\n");
else printf("Yes\n");
return 0;
}``````