@[Crewmateqaq](/user/551417) 谁告诉你SPFA不行了,还有,我又看不到代码……
by sssscy_free_stdio @ 2024-01-08 21:06:21
发一下代码:
```cpp
/*
Accoders 小K的农场
http://www.accoders.com/problem.php?cid=4615&pid=0
*/
#include "iostream"
#include "cstring"
#include "queue"
using namespace std;
int n, m, t1, t2, t3, t4;
int header[10240], idx, dis[10240], cnt[10240];
bool vis[10240];
struct edge{
int to, nxt, w;
}e[20480];
void add_edge(int u, int v, int w){
e[++idx].to=v;
e[idx].w=w;
e[idx].nxt=header[u];
header[u]=idx;
}
bool spfa(){
dis[0]=0;
queue<int>q;
q.push(0);
memset(dis, 0x3f, sizeof(dis));
while(!q.empty()){
int temp=q.front();
q.pop();
vis[temp]=false;
for(int i=header[temp];i;i=e[i].nxt){
if(dis[temp]+e[i].w<dis[e[i].to]){
cnt[e[i].to]++;
if(cnt[e[i].to]>n) return false;
dis[e[i].to]=dis[temp]+e[i].w;
if(!vis[e[i].to]){
vis[e[i].to]=true;
q.push(e[i].to);
}
}
}
}
return true;
}
int main(){
scanf("%d%d", &n, &m);
for(int i=1;i<=n;i++){
add_edge(0, i, 0);
}
for(int i=0;i<m;i++){
scanf("%d", &t4);
if(t4==1){
scanf("%d%d%d", &t1, &t2, &t3);
add_edge(t1, t2, -t3);
}else if(t4==2){//a-b<=c
scanf("%d%d%d", &t2, &t1, &t3);
}else if(t4==3){
scanf("%d%d", &t1, &t2);
add_edge(t1, t2, 0);
add_edge(t2, t1, 0);
}
}
if(spfa()) printf("Yes\n");
else printf("No\n");
}
```
by GoodLuckCat @ 2024-01-08 21:14:49
菜就多练
by sbhtn @ 2024-01-08 21:23:36
@[Crewmateqaq](/user/551417) 我就是spfa过得
by lianchanghua @ 2024-01-08 21:26:48
只用if也可以过啊,连循环都不用
by GoodLuckCat @ 2024-01-08 21:39:59
```cpp
#include<cstdio>
using namespace std;
int n;
int main()
{
scanf("%d",&n);
if(n==10||n==27||n==4928)printf("Yes\n");
else printf("No\n");
return 0;
}
```
by GoodLuckCat @ 2024-01-08 21:40:45
@[Huyuhao0215](/user/916579) 6
by 5t0_0r2 @ 2024-01-10 12:39:23