转自点击打开链接

出现在输入输出函数中的%*c ,作用是在输入或输出时,跳过一个变量,例如:
void main()
{
int i=1,j=2,k=3;
printf("%d,%*d,%d\n",i,j,k,i);//遇到%*d,就把j跳过了,输出k,故后面应该放4个变量
}
程序的输出结果是1, 3,1 (如果出现跳过变量的情况,跳过的变量用空格代替,因此3前面多一个空格;

#include<bits/stdc++.h>
using namespace std;
const int maxn=1e5+5;
vector <int>edg[maxn];
char sex[maxn+10];
int ans,top,que[maxn];
void dfs(int x,int s,int e)
{
    int i;
    if(s>=5) return;
    if(e==0)
    {
        for(i=0;i<top;i++){
            if(x==que[i])
            {
                ans=1;
                return;
            }
        }
    }
    else que[top++]=x;
    for(int i=0;i<(int)edg[x].size();i++){
        dfs(edg[x][i],s+1,e);
    }
    return ;
}
int main()
{
    int n; cin>>n;
    int x,y,z;
    for(int i=0;i<n;i++){
        scanf("%d",&x);
        scanf("%*c%c",&sex[x]);
        scanf("%d%d",&y,&z);
        if(y!=-1) edg[x].push_back(y);
        if(z!=-1) edg[x].push_back(z);
        sex[y]='M';
        sex[z]='F';
    }
    int k;cin>>k;
    for(int i=0;i<k;i++){
        scanf("%d%d",&x,&y);
        ans=0;
        if(sex[x]==sex[y]) printf("Never Mind\n");
        else
        {
            top=0;
            dfs(x,0,1);
            dfs(y,0,0);
            if(ans) printf("No\n");
            else printf("Yes\n");
        }
    }
    return 0;
}