bzoj 2330
来源:互联网 发布:js判断是否为json格式 编辑:程序博客网 时间:2024/06/11 12:41
今天学习了一下差分约束系统,一堆证明之后得出的结论就是如果a-b>=c,就是从b到a连一条长度为c的边,然后跑最长路。
#include<queue>
#include<cstdio>
using namespace std;
#define ll long long
#define to e[i].v
#define inf 123456789
#define rep(i,a,b) for (int i=a;i<=b;++i)
#define N 100005
struct Node{
int next,v,w;
}e[N*2];
int n,k,id,dist[N],head[N],vis[N],o[N];
ll ans;
void add(int u,int v,int w) {e[id].v=v;e[id].w=w;e[id].next=head[u];head[u]=id++;}
int max(int A,int B) {return A>B? A:B;}
int min(int A,int B) {return A>B? B:A;}
int read()
{
int x=0,f=1;char ch=getchar();
for (;ch>'9'||ch<'0';ch=getchar()) if (ch=='-') f=-1;
for (;ch>='0'&&ch<='9';ch=getchar()) x=x*10+ch-'0';
return x*f;
}
int Spfa()
{
queue<int>S;rep(i,1,n) dist[i]=vis[i]=1,o[i]=0,S.push(i);
while (!S.empty())
{
int u=S.front();S.pop();vis[u]=0;o[u]++;if (o[u]>n) return 0;
for (int i=head[u];i;i=e[i].next)
if (dist[u]+e[i].w>dist[to])
{
dist[to]=dist[u]+e[i].w;
if (!vis[to]) {vis[to]=1;S.push(to);}
}
}
return 1;
}
int main()
{
n=read();k=read();id=1;
rep(i,1,k)
{
int w=read(),u=read(),v=read();
if (w==1) add(u,v,0),add(v,u,0);
else if (w==2) add(u,v,1);
else if (w==3) add(v,u,0);
else if (w==4) add(v,u,1);
else add(u,v,0);
}
if (!Spfa()) {puts("-1");return 0;}
rep(i,1,n) ans=(ll)ans+(ll)dist[i];printf("%lld",ans);
return 0;
}
- bzoj 2330
- 【bzoj 2330】 糖果 candy
- BZOJ 2330: [SCOI2011]糖果
- bzoj-2330 糖果
- BZOJ 2330 [SCOI2011]糖果
- BZOJ 2330: [SCOI2011]糖果
- BZOJ 2330: [SCOI2011]糖果
- BZOJ 2330: [SCOI2011]糖果
- BZOJ 2330, 糖果
- BZOJ 2330[SCOI2011]糖果
- BZOJ 2330 [SCOI2011]糖果
- bzoj 2330 糖果
- [BZOJ ]
- BZOJ****-****
- BZOJ
- BZOJ
- BZOJ
- BZOJ
- A. Oath of the Night's Watch
- Linux系统从零到高手的进阶心得
- 使用Vue.js框架搭建火车票查询系统
- deepin linux下面的游戏有一个挺好的
- 最长递增子序列
- bzoj 2330
- pom文件提示:Missing artifact
- SQL中的case when then else end用法
- Deepin/Ubuntu上安装MySQL三步搞定
- PreparedStatement.RETURN_GENERATED_KEYS使用时出现Field 'id' doesn't have a default value错误
- [51nod] 1002 数塔取数问题 [dp][空间优化]
- PHP传输中文-json乱码
- UML
- usaco window arear(递归求矩形覆盖面积)