清深夏令营机考压轴题,对差分约束的认识还是不够深刻,算法写出来了图没建对,/(ㄒoㄒ)/~~



#define inf 0x3f3f3f3f
#define ll long long
#define vec vector<int>
#define P pair<int,int>
#define MAX 100005int N, K, x, a, b, vis[MAX], cnt[MAX], dist[MAX];
struct edge {int v, c;edge(int a = 0, int b = 0) { v = a, c = b; }
};
vector<edge>G[MAX];void addEdge(int x, int a, int b) {if (x == 1)G[a].push_back(edge(b, 0)), G[b].push_back(edge(a, 0));else if (x == 2)G[a].push_back(edge(b, 1));else if (x == 3)G[b].push_back(edge(a, 0));else if (x == 4)G[b].push_back(edge(a, 1));else G[a].push_back(edge(b, 0));
}bool spfa(int s) {memset(vis, 0, sizeof(vis));memset(cnt, 0, sizeof(cnt));fill(dist, dist + MAX, 0);queue<int> q; q.push(s); vis[s] = 1; dist[s] = 0;while (!q.empty()) {int u = q.front(); q.pop(); cnt[u]++; vis[u] = 0;if (cnt[u] == N)return false;for (int i = 0; i < G[u].size(); i++) {edge e = G[u][i];if (dist[u] + e.c > dist[e.v]) {dist[e.v] = dist[u] + e.c;if (!vis[e.v]) {vis[e.v] = 1;q.push(e.v);}}}}return true;
}int main() {while (scanf("%d %d", &N, &K) != EOF) {for (int i = 0; i <= N; i++) {G[i].clear();if (i != 0)G[0].push_back(edge(i, 1));//超级源点}int sign = 1;for (int i = 0; i < K; i++) {scanf("%d %d %d", &x, &a, &b);if (x == 2 || x == 4) {if (a == b) { sign = 0; }}addEdge(x, a, b);}if (!sign) { cout << -1 << endl; continue; }if (!spfa(0))cout << -1 << endl;else {ll mi = inf, res = 0;for (int i = 1; i <= N; i++) {if (dist[i] < mi)mi = dist[i];res += dist[i];}if (mi < 0)res += (-mi + 1)*N;cout << res << endl;}}
}

题解 P3275 【[SCOI2011]糖果】相关推荐

  1. 洛谷P3275 [SCOI2011]糖果

    题目描述 幼儿园里有\(N\)个小朋友,\(lxhgww\)老师现在想要给这些小朋友们分配糖果,要求每个小朋友都要分到糖果.但是小朋友们也有嫉妒心,总是会提出一些要求,比如小明不希望小红分到的糖果比他 ...

  2. P3275 [SCOI2011]糖果

    emmmm博客补不完喽~~~(其实这是题目链接,但..也确实是事实..) 这题呢,也基本上就是差分约束的模板题了(要是不知道差分约束的话自行百度一下喽~~),实际上这类题目吧,撇开读入,基本都一样,就 ...

  3. 【差分约束】SCOI2011糖果

    P3275 [SCOI2011]糖果 快noip了我还在干什么啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊 来我们看这道题 根据条件建图, 因为求得是最小值, 所以要跑最长路qwq(这是我记住的QAQ ...

  4. bzoj 2330: [SCOI2011]糖果

    2330: [SCOI2011]糖果 Description 幼儿园里有N个小朋友,lxhgww老师现在想要给这些小朋友们分配糖果,要求每个小朋友都要分到糖果.但是小朋友们也有嫉妒心,总是会提出一些要 ...

  5. 差分约束 【bzoj2330】[SCOI2011]糖果

    /*[bzoj2330][SCOI2011]糖果 2014年3月5日1,2761 Description 幼儿园里有N个小朋友,lxhgww老师现在想要给这些小朋友们分配糖果,要求每个小朋友都要分到糖 ...

  6. SPFA差分约束(bzoj 2330: [SCOI2011]糖果)

    2330: [SCOI2011]糖果 Time Limit: 10 Sec  Memory Limit: 128 MB Submit: 6355  Solved: 2096 [Submit][Stat ...

  7. LeetCode 力扣C++题解 575. 分糖果

    题目描述:给定一个偶数长度的数组,其中不同的数字代表着不同种类的糖果,每一个数字代表一个糖果.你需要把这些糖果平均分给一个弟弟和一个妹妹.返回妹妹可以获得的最大糖果的种类数.(难度:简单) 原题链接: ...

  8. 【BZOJ 2330】 [SCOI2011]糖果【差分约束】

    题目跳转: http://www.lydsy.com/JudgeOnline/problem.php?id=2330 Description 幼儿园里有N个小朋友,lxhgww老师现在想要给这些小朋友 ...

  9. BZOJ2330 SCOI2011糖果

    复习了一波差分约束. http://blog.csdn.net/my_sunshine26/article/details/72849441 构图方式记住就好. 本题要倒序插入否则会被卡. 1 #in ...

最新文章

  1. A站、B站、C站、D站、E站、F站、G站、H站、I站、J站、J站、L站、M站、N站…Z站?...
  2. 2.1/2.2 系统目录结构 2.3 ls命令 2.4 文件类型 2.5 alias命令
  3. 期望最大化(EM)算法
  4. ActiveMQ中Topic生产者
  5. mysql 交集_MYSQL交集函数
  6. java纯数字正则表达式_JAVA验证数字的正则表达式,来一发
  7. 【已解决】抱歉,由于某种原因,PowerPoint 无法加载D:\mathtype\Office Support\64\MathType(PowerPoint 2016).ppam加载项。
  8. 二叉搜索树的创建和比较
  9. 软件测试的方法有哪些?
  10. VBS让室友成为你儿子
  11. amcharts php,AMCHARTS+MYSQL+PHP的使用实例
  12. vue与ios和Android联调方法
  13. 完了!服务器沦为肉鸡了!排查过程!
  14. Android平台OpenGL ES图像处理(improving)
  15. 记:docker初使用报错:An error occurred and No connection could be made machine actively refused it
  16. 【点宽专栏】虚拟遗憾最小化(CFR)之量化择时与交易
  17. 《项目管理就是这么简单》--读书笔记
  18. 做数据分析,软件工具少不了,好用的数据分析软件工具
  19. CityEngine创造鲜活的三维数字城市
  20. 【电源专题】为开关稳压器选择正确的工作频率

热门文章

  1. CentOS7下源码编译安装MySQL5.6.4
  2. 童话镇计算机乐谱,天谕手游乐谱童话镇代码
  3. 如何将所需的CAD图纸打印出来?
  4. Spyder IPython控制台字体大小设置
  5. 技术:Vue express-generator生成器,分享一句话
  6. 同时运行多个Mac QQ的方法
  7. [iOS翻译]《iOS7 by Tutorials》在Xcode 5里使用单元测试(下)
  8. java代码发送邮件及消息抄送
  9. Qt从安装到实战项目
  10. 笑脸哭脸循环c语言,通达信哭笑脸主图指标公式