NOIP前考点不熟的复习

//快读
int read()
{
    int num=0,flag=1;char c=getchar();
    for(;c<'0'||c>'9';c=getchar())
      if(c=='-')flag==0;
    for(;c>='0'&&c<='9';c=getchar())
      num=(num<<3)+(num<<1)+c-48;
    return flag?nun:-num;

//spfa
queueq;
int d[N];
bool v[N]; 
void spfa(int k)
{
    memset(d,10,sizeof(d));
    memset(v,0,sizeof(v));
    q.push(k);d[k]=1;
    v[k]=1;
    while(!q.empty())
    {
        int x=q.front();q.pop();
        v[x]=0;
        for(int i=head[x];i;i=e[i].x)
        {
            int y=e[i].y,z=e[i].z;
            if(d[y]>d[x]+z){
                d[y]=d[x]+z;
                if(!v[y]){
                    v[y]=1;
                    q.push(y);
                }
            }
        }
    }
}
//欧拉函数
bool v[N];
int number[N],prime_number[N];
void first()
{
    memset(v,0,sizeof(v));
    number[1]=1;
    int tot=0;
    for(int i=2;i     {
        if(!vis[i])
        {
            prime_number[++tot]=i;
            number[i]=i-1;
        }
        for(int j=1;j<=tot;j++)
        {
            if(i*prime_number[j]>=N)break;
            v[i*prime_number[j]]=1;
            if(i%prime_number[j]==0)
            {
                number[i*prime_number[j]]=number[i]*prime_numner[j];
                break;
            }
            number[i*prime_number[j]]=number[i]*number[prime_number[j]];
        }
    }
}

你可能感兴趣的:(梳理)