枚举每头牛, 假设它在说谎, 建图判圈就行了...为啥水题都没人来写..

------------------------------------------------------------------

#include<bits/stdc++.h>
 
using namespace std;
 
typedef pair<int, int> pii;
 
const int maxn = 109;
 
struct edge {
int to, w;
edge(int _t, int _w):to(_t), w(_w) {}
};
 
vector<edge> G[maxn];
vector<pii> cow[maxn];
bool vis[maxn], F;
int d[maxn], N;
  

void dfs(int x) {

vis[x] = true;
for(vector<edge>::iterator e = G[x].begin(); e != G[x].end(); e++) if(d[e->to] <= d[x] + e->w) {
   if(!vis[e->to]) {
d[e->to] = d[x] + e->w;
    dfs(e->to);
   } else
       F = true;
   if(F) break;
}
vis[x] = false;
}
 
void init() {
memset(vis, false, sizeof vis);
int q;
cin >> N >> q;
while(q--) {
int c, u, v;
scanf("%d%d%d", &c, &u, &v);
c--; u--; v--;
cow[c].push_back(make_pair(u, v));
}
}
 
void work() {
int ans = 0;
for(int i = 0; i < N; i++) {
memset(d, 0, sizeof d);
F = false;
for(int j = 0; j < N; j++)
   G[j].clear();
for(vector<pii>::iterator it = cow[i].begin(); it != cow[i].end(); it++)
   G[it->first].push_back(edge(it->second, 0));
for(int j = 0; j < N; j++) if(j != i)
for(vector<pii>::iterator it = cow[j].begin(); it != cow[j].end(); it++)
   G[it->second].push_back(edge(it->first, 1));
for(int j = 0; j < N; j++) {
if(F) break;
dfs(j);
}
if(!F) ans++;
}
cout << ans << "\n";
}
int main() {
init();
work();
return 0;
}

------------------------------------------------------------------

3373: [Usaco2004 Mar]Lying Livestock 说谎的牲畜

Time Limit: 10 Sec  Memory Limit: 128 MB
Submit: 24  Solved: 8
[Submit][Status][Discuss]

Description

兽群中总是有一些麻烦制造者.约翰知道他的N(1≤N≤100)头奶牛中有一头总是说谎,其他的总是说真话.他想快速的找出这个麻烦制造者.为了实现这个目标,他一个一个的问这些奶牛Q(1≤Q≤1000)个关于它们吃草的简单问题(虽然大多数奶牛是诚实的但它们依旧很笨只能懂得一些关于食物的话题).
他将这些问题用以下的格式写了下来:
牛4说:牛5比牛10吃得多
牛6说:牛10比牛7吃得多
牛3说:牛2比牛6吃得多
牛1说:牛7比牛5吃得多
从这个例子中不难看出说谎的奶牛只有可能是4,6,1.你的任务是确定可能说谎的奶牛的个
数.可能说谎的奶牛是指如果这头奶牛说谎则输入数据中不存在矛盾.

Input

第1行:两个用空格分开的整数N和Q.第2到Q+1:每一行描述一个问题,由3个用空格隔开的整数A,B,C表示,意思是A说B牛吃的比C牛多.一头奶牛可能回答多次.

Output

仅一行一个整数即可能说谎的奶牛的头数.

Sample Input

3 4
3 1 2
1 3 1
1 3 2
2 2 1

Sample Output

2

样例说明
3头奶牛给出了4个回答.奶牛1说3>1,3>2,奶牛2说2>1,奶牛3说1>2.当然“>”的意思是“吃得多”. 显然,2号和3号的话是矛盾的.它们都有可能说谎.如果1号说谎则2,3都没说谎,那是不可能的.所以,1号说的一定是实话.

HINT

Source

BZOJ 3373: [Usaco2004 Mar]Lying Livestock 说谎的牲畜( 差分约束 )的更多相关文章

  1. bzoj 3373: [Usaco2004 Mar]Lying Livestock 说谎的牲畜

    3373: [Usaco2004 Mar]Lying Livestock 说谎的牲畜 Description 兽群中总是有一些麻烦制造者.约翰知道他的N(1≤N≤100)头奶牛中有一头总是说谎,其他的 ...

  2. BZOJ 3375: [Usaco2004 Mar]Paranoid Cows 发疯的奶牛( set )

    果然写得短就跑得慢... 直接用set就行了(你要写棵平衡树也可以).没有包含的话, 假如L(i) <= L(j), 那么R[i] <= R[j]. 所以从小到大扫, 每次查找左端点小于当 ...

  3. BZOJ 1637 [Usaco2007 Mar]Balanced Lineup:前缀和 + 差分

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1637 题意: Farmer John 决定给他的奶牛们照一张合影,他让 N (1 ≤ N ...

  4. DP经典 BZOJ 1584: [Usaco2009 Mar]Cleaning Up 打扫卫生

    BZOJ 1584: [Usaco2009 Mar]Cleaning Up 打扫卫生 Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 419  Solve ...

  5. bzoj3374[Usaco2004 Mar]Special Serial Numbers 特殊编号*

    bzoj3374[Usaco2004 Mar]Special Serial Numbers 特殊编号 题意: 求比一个数大的最小的一半以上的数位相同的数.数位数≤100. 题解: 模拟题.从低位枚举到 ...

  6. bzoj3375[Usaco2004 Mar]Paranoid Cows 发疯的奶牛*

    bzoj3375[Usaco2004 Mar]Paranoid Cows 发疯的奶牛 题意: 依次给出n只奶牛的产奶时间段,求最大的k使得前k只奶牛不存在一个时间段被另一个时间段完全覆盖的情况.n≤1 ...

  7. BZOJ.4500.矩阵(差分约束 SPFA判负环 / 带权并查集)

    BZOJ 差分约束: 我是谁,差分约束是啥,这是哪 太真实了= = 插个广告:这里有差分约束详解. 记\(r_i\)为第\(i\)行整体加了多少的权值,\(c_i\)为第\(i\)列整体加了多少权值, ...

  8. [BZOJ 4771]七彩树(可持久化线段树+树上差分)

    [BZOJ 4771]七彩树(可持久化线段树+树上差分) 题面 给定一棵n个点的有根树,编号依次为1到n,其中1号点是根节点.每个节点都被染上了某一种颜色,其中第i个节点的颜色为c[i].如果c[i] ...

  9. BZOJ 3389: [Usaco2004 Dec]Cleaning Shifts安排值班

    题目 3389: [Usaco2004 Dec]Cleaning Shifts安排值班 Time Limit: 1 Sec  Memory Limit: 128 MB Description      ...

随机推荐

  1. Tree(未解决。。。)

    Tree Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Submi ...

  2. Scrambled Polygon(凸多边形,斜率)

    Scrambled Polygon Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 7805   Accepted: 3712 ...

  3. 【已解决】谁动了我的CurrentPrincipal?求助我在给Artech的wcf petshop增加授权机制的时候遇到的问题。

    这个问题已解决,是绑定设置的问题,主要还是因为我自己没有深入理解WCF绑定的安全机制.在这篇博客里面我来说说怎么解决的. 下载了Artech的wcf petshop源码(博文链接)并调试运行成功后,打 ...

  4. nvarchar and nchar

    Same: 1.store unicode charactor. 2. A charactor is stroed with 2 bytes. Different. 1. nchar  会自动填充数据 ...

  5. s3c2440栈分配情况(fl2440裸机 stack)

    //2440INIT.S ;The location of stacks UserStack EQU (_STACK_BASEADDRESS-0x3800) ;0x33ff4800 ~ SVCStac ...

  6. 「OC」block 和 protocol

    一.block   (一)简介 block 是什么?苹果推荐的类型,效率高,在运行中保存代码.用来封装和保存代码,有点像函数,block 可以在任何时候执行.在多线程.异步任务.集合遍历.集合排序.动 ...

  7. easyui好例子,值得借鉴

    http://www.cnblogs.com/wuhuacong/p/3317223.html

  8. zookeeper 安装

    Zookeeper安装 一.   下载zookeeper http://www.apache.org/dist/zookeeper/stable/ 二.   解压zookeeper.tar >& ...

  9. Sort list by merge sort

    使用归并排序对链表进行排序 O(nlgn) 的时间效率 /** * Definition for singly-linked list. * struct ListNode { * int val; ...

  10. 解析request的反馈信息

    Map<String,String> params = new HashMap<String,String>(); Map requestParams = request.ge ...