【题目链接】

点击打开链接

【算法】

当x = 1时,连边(a,b,0)和(b,a,0)

当x = 2时,连边(a,b,1)

当x = 3时,连边(b,a,0)

当x = 4时,连边(b,a,1)

当x = 5时,连边(a,b,0)

建立超级源点(Super Source),将这个点与所有点连一条权值为1的边,注意加边时要倒着加,否则会时间超限

【代码】

#include<bits/stdc++.h>
using namespace std;
#define MAXN 100010 struct Edge
{
int to;
long long w;
int nxt;
} e[MAXN<<]; int x,a,b,i,n,k,tot;
long long dis[MAXN];
int head[MAXN]; template <typename T> inline void read(T &x)
{
int f = ; x = ;
char c = getchar();
for (; !isdigit(c); c = getchar()) { if (c == '-') f = -f; }
for (; isdigit(c); c = getchar()) x = (x << ) + (x << ) + c - '';
x *= f;
}
template <typename T> inline void write(T x)
{
if (x < )
{
putchar('-');
x = -x;
}
if (x > ) write(x/);
putchar(x%+'');
}
template <typename T> inline void writeln(T x)
{
write(x);
puts("");
}
inline void add(int u,int v,long long w)
{
tot++;
e[tot] = (Edge){v,w,head[u]};
head[u] = tot;
}
inline long long spfa()
{
int i,cur,v;
long long w,ans = ;
queue<int> q;
static bool inq[MAXN];
static int cnt[MAXN];
q.push();
inq[] = true;
cnt[] = ;
while (!q.empty())
{
cur = q.front();
q.pop();
inq[cur] = false;
for (i = head[cur]; i; i = e[i].nxt)
{
v = e[i].to;
w = e[i].w;
if (dis[cur] + w > dis[v])
{
dis[v] = dis[cur] + w;
if (!inq[v])
{
inq[v] = true;
q.push(v);
cnt[v]++;
if (cnt[v] > n) return -;
}
}
}
}
for (i = ; i <= n; i++) ans += dis[i];
return ans;
} int main()
{ read(n); read(k);
for (i = n; i >= ; i--) add(,i,);
for (i = ; i <= k; i++)
{
read(x); read(a); read(b);
if (x == )
{
add(a,b,);
add(b,a,);
}
if (x == )
{
add(a,b,);
if (a == b)
{
writeln(-);
return ;
}
}
if (x == ) add(b,a,);
if (x == )
{
add(b,a,);
if (a == b)
{
writeln(-);
return ;
}
}
if (x == ) add(a,b,);
}
writeln(spfa()); return ; }

最新文章

  1. AFNetworking 3.0 源码解读(八)之 AFImageDownloader
  2. The Java Enum: A Singleton Pattern [reproduced]
  3. vue.js 第五课
  4. [ASP.NET MVC] Real-time之HTML5 服务器发送事件(server-sent event)
  5. 各种AJAX方法的使用比较
  6. Hinet 日本数据处理流程
  7. NSArray(二) 、 NSMutableArray 、 NSSet 、 NSMutableSet
  8. 一起刷LeetCode4-Median of Two Sorted Arrays
  9. Linux下安装Wine运行windows程序
  10. UVA 439 Knight Moves(BFS)
  11. Java Web(十二) commons-fileupload上传下载
  12. docker环境下elasticsearch安装ik和拼音分词
  13. 【ABAP CDS系列】ABAP CDS中的系统信息
  14. Redis——Linux(centos7.x)下Redi和PHP Redis插件安装——【一】
  15. 01-maya基础
  16. SQLmap注入启发式检测算法
  17. Redis占硬盘空间
  18. web driver下载地址(selenium-3.141_浏览器版本对应)
  19. jQuery库介绍
  20. 云服务器 linux文件系统异常an error occurren during the file system check导致服务器启动失败

热门文章

  1. python队列的实现
  2. 通过Oracle函数SQL实现C# String.Format字符串格式化功能
  3. Compute和Linq的Field使用
  4. 调用微信扫一扫功能,踩坑&#39;invalid signature&#39;
  5. Python学习笔记(3)动态类型
  6. static private 与 final 的用法总结
  7. 手机端--tap PC端--click
  8. ubuntu下手动配置apache2.4.12
  9. Wind rotor states
  10. Thinkphp 批量更新方法 saveALL