http://acm.hdu.edu.cn/showproblem.php?pid=1811

拓扑排序和并差集

 #include <cstdio>
#include <queue>
#include <vector>
#include <cstring>
#include <algorithm>
#define maxn 10010
using namespace std;
int n,m,c;
int f[maxn],in[maxn];
vector<int>g[maxn];
struct node
{
int x,y;
char ch;
}p[maxn*];
void inti()
{
for(int i=; i<=n; i++)
{
f[i]=i; in[i]=;
g[i].clear();
}
} int find1(int x)
{
if(x==f[x]) return x;
return f[x]=find1(f[x]);
} void merge1(int a,int b)
{
int fa=find1(a);
int fb=find1(b);
if(fa!=fb)
{
f[fb]=fa;
}
} int topp()
{
int flag=;
queue<int>q;
for(int i=; i<n; i++)
{
if(!in[i]&&find1(i)==i) q.push(i);
}
int cnt=;
while(!q.empty())
{
if(q.size()>=) flag=-;
int x=q.front(); q.pop();
cnt++;
for(int i=; i<(int)g[x].size(); i++)
{
if((--in[g[x][i]])==) q.push(g[x][i]);
}
}
if(cnt<c) return ;
return flag;
}
int main()
{
while(~scanf("%d%d",&n,&m))
{
inti();
c=n;
for(int i=; i<m; i++)
{
scanf("%d%*c%c%*c%d",&p[i].x,&p[i].ch,&p[i].y);
if(p[i].ch=='=')
{
merge1(p[i].x,p[i].y); c--;
}
}
bool flag=false;
for(int i=; i<m; i++)
{
if(p[i].ch=='=')
{
continue;
}
int x1=find1(p[i].x); int y1=find1(p[i].y);
if(x1==y1) flag=true;
if(p[i].ch=='<')
{
if(find(g[x1].begin(),g[x1].end(),y1)==g[x1].end())
{
g[x1].push_back(y1);
in[y1]++;
}
}
else if(p[i].ch=='>')
{
if(find(g[y1].begin(),g[y1].end(),x1)==g[y1].end())
{
g[y1].push_back(x1);
in[x1]++;
}
}
}
bool flag1=false;
if(!flag)
{
int cc=topp();
if(cc==) flag=true;
else if(cc==-) flag1=true;
}
if(flag)
{
printf("CONFLICT\n");
}
else if(flag1)
{
printf("UNCERTAIN\n");
}
else printf("OK\n");
}
return ;
}

最新文章

  1. 3.4.4 数据预留和对齐(skb_reserve, skb_push, skb_put, skb_pull)
  2. 【深度学习】之Caffe的solver文件配置(转载自csdn)
  3. GO_order
  4. CXF学习(3) wsdl文件
  5. HTML5塔防游戏——《三国塔防》 - Yorhom&#39;s Game Box
  6. codeforces 624B Making a String
  7. Codeforces Round #331 (Div. 2)C. Wilbur and Points 贪心
  8. jQuery滚动条插件 – jquery.slimscroll.js
  9. 泛型 Field 和 SetField 方法 (LINQ to DataSet)
  10. 使用xml及java代码混合的方式来设置图形界面
  11. 数据库MySQL调优实战经验总结
  12. BufferedReaderTest
  13. Java web 引入wangEditor编辑器
  14. ●BZOJ 3561 DZY Loves Math VI
  15. Mybatis 批量添加,批量更新
  16. jquery获取url的方式
  17. Android Stdio 无法打开模拟器
  18. Knapsack CodeForces - 1132E (多重背包)
  19. (转)飘逸的python - 增强的格式化字符串format函数
  20. SSL证书部署

热门文章

  1. KEIL的混合编程操作
  2. Android Fragment getActivity返回null解决
  3. /sbin/ifup: configuration for eth0 not found解决
  4. HTML5 拼图游戏
  5. c语言通过时间种子产生随机数并选出最大值以及下标
  6. eclispe远程调试tomcat
  7. RPG JS跨平台测试
  8. Class的生命周期
  9. .net中将DataTable导出到word、Excel、txt、htm的方法
  10. java socket报文通信(二)报文的封装