转自点击打开链接
出现在输入输出函数中的%*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;
}