zoukankan      html  css  js  c++  java
  • [POI2008] CLO

    zz:http://hzwer.com/3010.html
    Byteotia城市有n个 towns m条双向roads. 每条 road 连接 两个不同的 towns ,没有重复的road. 你要把其中一些road变成单向边使得:每个town都有且只有一个入度
    Input
    第一行输入n m.1 <= n<= 100000,1 <= m <= 200000 下面M行用于描述M条边.
    Output
    TAK或者NIE 常做POI的同学,应该知道这两个单词的了…
    Sample Input
    4 5
    1 2
    2 3
    1 3
    3 4
    1 4

    Sol:

    如果点构成一个环,则满足条件.并且环上的点如果指向别的点,也是满足条件的

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    using namespace std;
    inline int read()
    {
        int x=0;char ch=getchar();
        while(ch<'0'||ch>'9'){ch=getchar();}
        while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}
        return x;
    }
    int n,m;
    int fa[100005];
    bool mark[100005];
    int find(int x)
    {return x==fa[x]?x:fa[x]=find(fa[x]);}
    int main()
    {
    	n=read();m=read();
    	for(int i=1;i<=n;i++)
    	    fa[i]=i;
    	for(int i=1;i<=m;i++)
    	{
    		int u=read(),v=read();
    		int p=find(u),q=find(v);
    		if(p!=q)
    		    {
    			         fa[p]=q;
    			         mark[q]=(mark[p]|mark[q]);
    			         //p,q只要有一个有环,则q所在的连通块也满足条件 
    			}
    		else 
    		       mark[p]=1;
    	}
    	for(int i=1;i<=n;i++)
    	    if(!mark[find(i)])
    	        {printf("NIE");return 0;}
    	printf("TAK");
    	return 0;
    }
    
  • 相关阅读:
    navicat执行大容量的.sql文件时的设置
    unity3d的四元数 Quaternion
    Unity运行时刻资源管理
    unity3d 加密资源并缓存加载
    unity3d webplayer 16:9 居中显示模板
    quaternion*Vector3的新理解
    PoolManager
    网上关于碰撞的资料
    游戏美术:色彩原理
    unity3d下载Obb分包文件
  • 原文地址:https://www.cnblogs.com/cutemush/p/12485809.html
Copyright © 2011-2022 走看看