为防止广告,目前nocow只有登录用户能够创建新页面。如要创建页面请先登录/注册(新用户需要等待1个小时才能正常使用该功能)。

USACO/rotation analysis

来自NOCOW
跳转到: 导航, 搜索
{
TASK:rotation
LANG:PASCAL
}
VAR
  a,b,c,i,n,ans:longint;
BEGIN
  assign(input,'rotation.in');
  assign(output,'rotation.out');
  reset(input);
  rewrite(output);
  readln(n);
    for i:=1 to n-1 do
      BEGIN
        readln(a,b,c);
        ans:=ans xor c;
      END;
  writeln(ans);
  close(input);
  close(output);
END.
/*
TASK:rotation
LANG:C
*/
#include<stdio.h>
#include<string.h>
struct roll{
       int circle,map[1001],num,p[1001];
};
roll a[1001];
int n,queue[1001];
int main()
{
    freopen("rotation.in","r",stdin);
    freopen("rotation.out","w",stdout);
    memset(a,-1,sizeof(a));
    scanf("%d",&n);
    int i,j,x,y;
    for(i=1;i<=n;i++)a[i].num=0;
    for(i=1;i<n;i++)
       {
          scanf("%d%d",&x,&y);
          scanf("%d",&a[x].p[++a[x].num]);
          a[x].map[a[x].num]=y;
       }
    a[1].circle=0;
    int front=0,back=1,ok=0;
    queue[1]=1;
    while(ok==0&&front<back)
    {
       front++;
       for(i=1;i<=a[queue[front]].num;i++)
       {
          if(a[a[queue[front]].map[i]].circle<0)
          {
             a[a[queue[front]].map[i]].circle=(a[queue[front]].circle+a[queue[front]].p[i])%2;
             if(a[queue[front]].map[i]==n)ok=1;
             queue[++back]=a[queue[front]].map[i];
          }
       }
    }
    printf("%d\n",a[n].circle);
    return 0;
}

广搜的,题目本身只是一条链……


/*
TASK:rotation
LANG:C++
*/
#include<stdio.h>
int n,s[1001],d[1001],c[1001];
int main()
{
    freopen("rotation.in","r",stdin);
    freopen("rotation.out","w",stdout);
    int i,j=1,f=0;
    scanf("%d",&n);
    for(i=1; i<n; i++)
    {
             scanf("%d%d%d",&s[i],&d[i],&c[i]);
             if(s[i]==1) {if(c[i]==1) f=!f; j=d[i];}
             }
    while(j!=n)
    {
            for(i=1; i<n; i++)
             if(s[i]==j) break;
            j=d[i]; if(c[i]==1) f=!f;
            }
    printf("%d\n",f);
    return 0;
    }

诶,本以为有可能不是一条链,会有坑人的数据的…………

个人工具