CF1101D GCD Counting 포인트 분리 + 질적 인수 분해

1732 단어
본질이 다르고 인수가 많지 않을 거라고 생각해서 잘랐어요.
 
Code: 
#include  
#include  
#include  
#define N 200004  
#define setIO(s) freopen(s".in","r",stdin) 
using namespace std; 
int n,tot,edges,sn,root,tl,answer; 
vectorv[N];   
int prime[N],is[N],num[N]; 
int val[N],hd[N],to[N<<1],nex[N<<1];       
int size[N],mx[N],vis[N],f[N],g[N],tmp[N],depth[N],cur[N],number[N];          
void add(int u,int v) 
{
    nex[++edges]=hd[u],hd[u]=edges,to[edges]=v;    
}     
void getroot(int u,int ff) 
{
    size[u]=1,mx[u]=0; 
    for(int i=hd[u];i;i=nex[i]) 
        if(to[i]!=ff&&!vis[to[i]]) 
            getroot(to[i],u),size[u]+=size[to[i]],mx[u]=max(mx[u],size[to[i]]); 
    mx[u]=max(mx[u],sn-size[u]); 
    if(mx[u]1) answer=max(answer,1);  
    tl=0;      
    number[u]=val[u];   
    for(i=hd[u];i;i=nex[i]) 
    {
        if(vis[to[i]]) continue;    
        re=tl+1,dfs(to[i],u,1);     
        for(j=re;j<=tl;++j) 
        {
            int a=tmp[j],b=depth[j];  
            if(a>1) 
            { 
                for(int k=0;k1) 
            {
                for(int k=0;k1) for(int k=0;k1) for(j=0;j

좋은 웹페이지 즐겨찾기