zoukankan      html  css  js  c++  java
  • HDU5961传递

    分析

    啥是竞赛图啊
    竞赛图对这个题好像没有很大的影响,考虑什么样的能够传递,其实说白了就是对于一个顶点(u),如果他的一条出边的顶点(v)能够到达(x),那么(u)也能到达(x),然后因为只涉及到能不能到达,所以用bitset完美解决。
    时间复杂度应该(O(Tn^2)),最多有八组极限数据,2016的平方是32514048,一秒的话肯定不够,六秒就可以了。

    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    #include<bitset>
    using namespace std;
    const int N=2020;
    struct Edge{
    	int to,nxt;
    }e[N*N];
    bitset<N> dis[N];
    int idx,h[N],n;
    void Ins(int a,int b){
    	dis[a][b]=1;
    	e[++idx].to=b;
    	e[idx].nxt=h[a];
    	h[a]=idx;
    }
    char s[N][N];
    bool judge(char ch){
    	memset(h,0,sizeof(h));
    	idx=0;
    	for(int i=0;i<n;i++){
    		dis[i].reset();
    		for(int j=0;j<n;j++)
    			if(s[i][j]==ch)
    				Ins(i,j);
    	}
    	for(int i=0;i<n;i++)
    		for(int j=h[i];j;j=e[j].nxt){
    			int v=e[j].to;
    			if((dis[v]&dis[i])!=dis[v])return 0;
    		}
    	return 1;
    }
    int main(){
    	int T;
    	scanf("%d",&T);
    	while(T--){
    		scanf("%d",&n);
    		for(int i=0;i<n;i++)
    			scanf("%s",s[i]);
    		if(judge('P')&&judge('Q'))
    			printf("T
    ");
    		else printf("N
    ");
    	}
    }
    
  • 相关阅读:
    希尔排序(Shell Sorting)
    插入排序(Insertion Sorting)
    选择排序(Select Sorting)
    冒泡排序(Bubble Sorting)
    排序算法(Sort Algorithm)
    递归(Recursion)
    包的导入
    Base64编码
    python各种模块,迭代器,生成器
    CF821 B. Okabe and Banana Trees 简单数学
  • 原文地址:https://www.cnblogs.com/anyixing-fly/p/12927917.html
Copyright © 2011-2022 走看看