Example #1
0
void suan()
{
    long int x, y;
    printf("输入两个正整数:");
    while (!scanf("%ld %ld", &x, &y) || x<=0 || y<=0)
    {
        getchar();
        printf("\n错误!请输入两个正整数:");
    }
    printf("最大公约数为 %ld\n", chu(x, y));
    printf("最小公倍数为 %ld\n", x*y/chu(x, y));
}
int main()
{
    int u,v;
    int i,f,num;
    scanf("%d",&num);
    for(i=0;i<num;i++)
    {
        chu();
        scanf("%d%d",&n,&m);
        for(f=0;f<m;f++)
        {
            scanf("%d%d",&u,&v);
            if(find(u) == find(v))
            {
                hash[find(u)]=1;    
            }
            else
            {
                merge(find(u),find(v));
            }
        }
        count();
        copy();
        chu();
        scanf("%d%d",&n,&m);
        for(f=0;f<m;f++)
        {
            scanf("%d%d",&u,&v);
            if(find(u) == find(v))
            {
                hash[find(u)]=1;    
            }
            else
            {
                merge(find(u),find(v));
            }
        }
        count();
        if(1 == check())
        {
            printf("Case #%d: YES\n",i+1);
        }
        else
        {
            printf("Case #%d: NO\n",i+1);
        }
    }
    return 0;
}
int main()
{
    int num,i,f;
    scanf("%d",&num);
    for(i=0; i<num; i++)
    {
        scanf("%d%d%d",&n,&m,&t);
        chu();
        for(f=0; f<m; f++)
        {
            scanf("%d%d%d%d",&road[f].u,&road[f].v,&road[f].cap,&road[f].len);
        }
        qsort(road,m,sizeof(road[0]),cmp);
        for(f=0; f<m; f++)
        {
            spfa(f);
            if(dis[n] <= t)
            {
                printf("%d\n",road[f].cap);
                break;
            }
        }
    }
    return 0;
}
int main()
{
    int u,v,ans;
    int a,b,x,i,alen,blen;
    while(scanf("%d%d",&n,&m)!=EOF)
    {
        chu();
        ans=0;
        for(i=0;i<m;i++)
        {
            scanf("%d%d%d",&a,&b,&x);
            u=find(a);
            v=find(b);
            if(u == v)
            {
                if(1 == check(a,b,x))
                {
                    ans++;
                }
            }
            else
            {
                alen=query(a);
                blen=query(b);            
                merge(u,v,x+alen-blen);
            }
        }
        printf("%d\n",ans);
    }
    return 0;
}
int main()
{
    int i,cas,f,g;
    scanf("%d",&cas);
    for(i=0;i<cas;i++)
    {
        scanf("%d%d%d",&n,&m,&x);
        chu();
        for(f=1;f<=n;f++)
        {
            for(g=1;g<=m;g++)
            {
                scanf("%d",&ball[f][g].loc);
            }
        }
        for(f=1;f<=n;f++)
        {
            for(g=1;g<=m;g++)
            {
                scanf("%d",&ball[f][g].cost);
            }
            qsort(&ball[f][1],m,sizeof(ball[f][1]),cmp);
        }
        printf("%d\n",dp());
    }    
    return 0;
}
int main()
{
    int f,i; 
    while(scanf("%d",&nn)!=EOF)
    {
        group=nn; 
        n=2*group; 
        for(i=1;i<=nn;i++)
        {
            for(f=1;f<=nn;f++)
            {
                scanf("%d",&b[i][f]); 
            }
        }

        if(0 == pan())
        {
            printf("NO\n");
            continue;
        }
                
        for(now=1;now<=31;now++)
        {
            chu();        
            for(i=1;i<=nn;i++)
            {
                for(f=i+1;f<=nn;f++)
                {
                    if(i == f)
                    {
                        continue;    
                    } 
                    else if((i%2)==0 && (f%2)==0) 
                    {
                        huo(i,f);
                    }
                    else if((i%2)==1 && (f%2)==1)
                    {
                        yu(i,f); 
                    }
                    else
                    {
                        yihuo(i,f);        
                    } 
                }
            }
            slove();
            if(0 == check())
            {
                printf("NO\n"); 
                break;
            }
        }
        if(32 == now)
        {
            printf("YES\n");
        }
    } 
    return 0;
}
int main()
{
    int val,sum,u,v,i,nn,m;
    while(scanf("%d%d",&nn,&m)!=EOF)
    {
        chu();
        sum=0;
        s=nn+m+1;
        t=nn+m+2;
        n=nn+m+2;
        for(i=1;i<=nn;i++)
        {
            scanf("%d",&val);
            add(i,t,val);
        }
        for(i=nn+1;i<=nn+m;i++)
        {
            scanf("%d%d%d",&u,&v,&val);
            sum+=val;
            add(s,i,val);
            add(i,u,INF);
            add(i,v,INF);
        }
        printf("%d\n",sum-isap());
    }
    return 0;
}
int main()
{
    double sum;
    int l,r,i,f;
    while(scanf("%d%d",&n,&m),n+m)
    {
        chu();
        for(i=0;i<m;i++)
        {
            scanf("%d%d",&l,&r);
            merge(find(l),find(r));
        }
        for(i=n;i<n+6;i++)
        {
            p[i]=0;
        }
        for(i=n-1;i>=0;i--)
        {
            if(set[i] != i)
            {
                p[i]=p[find(i)];
                continue;            
            }
            sum=0;
            for(f=1;f<=6;f++)
            {
                sum+=p[i+f];
            }
            p[i]=sum/6+1;
        }
        printf("%.4lf\n",p[0]);
    }
    return 0;
}
int main()
{
    int num,i,f,m,u,v,id;
    char ch[10];
    scanf("%d",&num);
    for(i=0;i<num;i++)
    {
        printf("Case %d:\n",i+1);
        scanf("%d%d",&n,&m);
        chu();
        for(f=0;f<m;f++)
        {
            scanf("%s",ch);
            if('T' == ch[0])
            {
                scanf("%d%d",&u,&v);    
                merge(find(u),find(v));
            }
            else
            {
                scanf("%d",&id);    
                id=find(id);
                printf("%d %d %d\n",id,d[id],path);
            }    
        }
    }
    return 0;
}
int main()
{
    int sum,x,i,f,nn,ans;
    while(scanf("%d%d",&nn,&m)!=EOF)
    {
        chu();
        for(i=1;i<=nn;i++)
        {
            sum=0;
            for(f=1;f<=m;f++)
            {
                scanf("%d",&x);
                sum<<=1;
                sum+=x;
            }
            id[sum]++;
        }
        
        for(i=m;i>=1;i--)
        {
            scanf("%d",&cap[i]);
        }
        
        build();
        
        ans=isap();
        if(nn == ans)
        {
            printf("YES\n");
            continue;
        }
        printf("NO\n");
    }    
    return 0;
}
int main()
{
    int i,f,k,v;
    double ans,m,sun;
    while(scanf("%d",&n)!=EOF)
    {
        chu();
        for(i=1;i<=n;i++)
        {
            scanf("%d",&k);
            for(f=0;f<k;f++)
            {
                scanf("%d%lf",&v,&sun);
                zan.v=v;
                zan.sun=sun/100;
                q[i].push_back(zan);
            }
        }

        scanf("%d%d%lf",&s,&t,&m);
        ans=bfs();
        if(-1 == ans)
        {
            printf("IMPOSSIBLE!\n");
        }
        else
        {
            printf("%.2lf\n",m*ans);
        }
    }
    return 0;
}
int main()
{
    int u,v,len; 
    int i;
    while(scanf("%d%d",&n,&m),n+m)
    {
        chu(); 
        for(i=0;i<m;i++)
        {
            scanf("%d%d%d",&u,&v,&len); 
            add(u,v,len); 
        }
        scanf("%d%d%d%d",&s1,&t1,&s2,&t2);

        spfa(s1);
        for(i=1;i<=n;i++)
        {
            sun[i]=dis[i];
        }
        spfa(s2);
        for(i=1;i<=n;i++)
        {
            tang[i]=dis[i];
        }
                
        printf("%d\n",spfa_tem());
    } 
    return 0;
}
int main()
{
    double x;
    int ji,i,f,k,m,xe,xs,flag;
    ji=0;
    while(scanf("%d",&n),n)
    { 
        ji++;
        getchar();
        chu();
        for(i=0;i<n;i++)
        {
            gets(ch[i]);
        }
        scanf("%d",&m);
        getchar();
        for(i=0;i<m;i++)
        {
            scanf("%s%lf%s",s,&x,e);
            xs=finds();
            xe=finde();
            if(-1==map[xs][xe]||x>map[xs][xe])
            {
                map[xs][xe]=x;
            }
        } 
        for(k=0;k<n;k++)
        {
            for(i=0;i<n;i++)
            {
                for(f=0;f<n;f++)
                {
                    if(-1!=map[i][k]&&-1!=map[k][f])
                    {
                        map[i][f]=maxx(map[i][f],map[i][k]*map[k][f]);
                    }
                }
            }
        }
        flag=0; 

        for(i=0;i<n;i++)
        {
            if(1<map[i][i])
            {
                flag=1;
                break;
            }
        }
        if(1==flag)
        {
            printf("Case %d: Yes\n",ji);
        }
        else
        {
            printf("Case %d: No\n",ji);
        }
    }
    return 0;
}
void main()
{
    
	ru(num);
    int *min,*max,*m,*n,t,h;
	max=min=num;
	for(m=num+1;m<num+10;m++)
	{
		if(*m>*max)
		{
			max=m;
		}
	}
	t=num[9];
	num[9]=*max;
	*max=t;
    for(n=num+1;n<num+10;n++)
	{
		if(*n<*min)
		{
			min=n;
		}
	}
	h=num[0];
	num[0]=*min;
	num[0]=h;
	chu (num);
}
int main()
{
    int i,u,v;
    while(scanf("%d%d",&n,&m),n+m)
    {
        chu();
        for(i=0;i<m;i++)
        {
            scanf("%d%d",&u,&v); 
            u--;
            v--; 
            add(u,v); 
        }
        slove();
        for(i=0;i<n;i++)
        {
            if(1 != belong[i])
            {
                printf("No\n"); 
                break; 
            } 
        } 
        if(n == i)
        {     
            printf("Yes\n"); 
        }
    } 
    return 0;
}
int main()
{
    int i,f,val,len,s,t,nn;
    char ch[110];
    while(scanf("%d",&nn),nn)
    {
        chu();
        n=2*nn+2;
        s=2*nn+1;
        t=2*nn+2;
        for(i=1;i<=nn;i++)
        {
            scanf("%d",&val);
            add(s,i,1,0);
            add(i+nn,t,1,0);
            map[i]=val;
        }
        for(i=1;i<=nn;i++)
        {
            scanf("%s",ch);
            len=strlen(ch);
            for(f=0;f<len;f++)
            {
                if('1' == ch[f])
                {
                    add(i,f+1+nn,1,-(map[i]^map[f+1]));
                }
            }
        }
        mcmf(s,t);
        printf("%d\n",-mincost);
    }
    return 0;
}
int main()
{
    int i,f,res,x,y,j;
//    freopen("D:\\in.txt","r",stdin);
    while(scanf("%d",&n)!=EOF)
    {
        chu();
        for(i=0;i<n;i++)
        {    
            scanf("%d:(%d)",&x,&j);
            for(f=0;f<j;f++)
            {
                scanf("%d",&y);
                q[ji].u=x;
                q[ji].v=y;
                next[ji]=first[x];
                first[x]=ji;
                ji++;
                
                q[ji].u=y;
                q[ji].v=x;
                next[ji]=first[y];
                first[y]=ji;
                ji++;
            }
        }    
        res=xyl();
        printf("%d\n",res/2);
    }    
    return 0;
}
int main()
{
    char ch[2005];
    int i,f,g,ans,num;
    scanf("%d",&num);
    for(i=0;i<num;i++)
    {
        scanf("%d",&n);
        chu();
        for(f=1;f<=n;f++)
        {
            scanf("%s",ch);
            for(g=1;g<=n;g++)
            {
                if('1' == ch[g-1])
                {
                    q[f].push_back(g);
                    du[g]++;
                }
            }
        }
        ans=topo();
        printf("Case #%d: ",i+1);
        if(1 == ans)
        {
            printf("Yes\n");
        }
        else
        {
            printf("No\n");
        }
    }
    return 0;
}
int main()
{
    int i,f;
    while(scanf("%d",&n),n)
    {
        for(i=1;i<=n;i++)
        {
            for(f=1;f<=n;f++)
            {
                scanf("%d",&map[f][i]);
            }
        }
        for(i=1;i<=n;i++)
        {
            scanf("%d",&tax[i]);
        }
        
        while(scanf("%d%d",&t,&s),-2 != s+t)
        {
            chu();
            spfa();    
        }
    }
    return 0;
}
int main()
{
    int i,num,f,u,v,len;
    scanf("%d",&num);
    for(i=0;i<num;i++)
    {
        scanf("%d%d",&n,&m);    
        chu();
        for(f=0;f<n-1;f++)
        {
            scanf("%d%d%d",&u,&v,&len);
            ru.u=v;
            ru.len=len;
            q[u].push_back(ru);
            ru.u=u;
            q[v].push_back(ru);
        }
        for(f=0;f<m;f++)
        {
            scanf("%d%d",&u,&v);
            tem.id=f;
            tem.u=u;
            qes[v].push_back(tem);
            tem.u=v;
            qes[u].push_back(tem);    
        }
        lca(1,0);
        for(f=0;f<m;f++)
        {
            printf("%d\n",ans[f]);
        }
    }
    return 0;
}
int main()
{
    int flag,n,i;
    while(scanf("%d",&n),n)
    {
        chu(); 
        for(i=0;i<n;i++)
        {
            scanf("%d",&que[i]);
            fun(que[i]);
        }
        flag=0; 
        for(i=n-1;i>=0;i--)
        {
            if(-1 == hash[que[i]])
            {
                if(1 == flag)
                {
                    printf(" "); 
                }
                printf("%d",que[i]);        
                flag=1; 
            }    
        }
        printf("\n"); 
    }
    return 0;
}
int main()
{
    char ch[25];
    int dir,u,v;
    int i,cas,len,f,ans;
    scanf("%d",&cas);
    for(i=0; i<cas; i++)
    {
        chu();
        scanf("%d",&nn);
        for(f=0; f<nn; f++)
        {
            scanf("%s%d",ch,&dir);
            len=strlen(ch);
            u=ch[0]-'a'+1;
            v=ch[len-1]-'a'+1;
            in[v]++;
            out[u]++;
            merge(find(u),find(v));
            fl[u]=fl[v]=1;
            if(1 == dir)
                add(u,v,1);
        }
        ans=check();
        printf("Case %d: ",i+1);
        puts(1==ans?"Well done!":"Poor boy!");
    }
    return 0;
}
int main()
{
    int num,i,f,sum;
    scanf("%d",&num);
    for(i=0;i<num;i++)
    {
        scanf("%d",&n);
        sum=0;
        chu();
        for(f=1;f<=n;f++)
        {
            scanf("%d",&que[f]);
            sum+=que[f];
        }
        qsort(&que[1],n,sizeof(que[0]),cmp);
        if(0 != sum%4)
        {
            printf("no\n");
            continue;
        }        
        ave=sum/4;
        ci=0;
        flag=0;
        dfs(0,1);                
        if(1 == flag)
        {
            printf("yes\n");
        }
        else
        {
            printf("no\n");
        }
    }
    return 0;
}
int main()
{
    int i,f,num;
//    freopen("D:\\in.txt","r",stdin);
    scanf("%d",&num);
    for(i=0;i<num;i++)
    {
        scanf("%d%d%d",&n,&m,&l);
        chu();
        for(f=0;f<n;f++)
        {
            scanf("%d%d",&que[f].c,&que[f].w);
        }
        for(f=0;f<n;f++)
        {
            mul(que[f].c,que[f].w);
        }
        if(dp[m][l] < 0)
        {
            printf("0\n");
            continue;
        }
        printf("%d\n",dp[m][l]);
    }
    return 0;
}
int main()
{
    int i,x,y,d,res;
    while(scanf("%d%d",&n,&m)!=EOF)
    {
        chu(n);

        for(i=0;i<m;i++)
        {
            scanf("%d%d%d",&x,&y,&d);
            if(-1==map[x][y])
            {
                map[x][y]=d;
                map[y][x]=d;
            }
            else if(d<map[x][y])
            {
                map[x][y]=d;
                map[y][x]=d;
            }
        }
        scanf("%d%d",&s,&t);

        res=bfs();
        printf("%d\n",res);
    }
    return 0;
}
int main()
{
    int u,v,len,nn,m,i;
    while(scanf("%d%d",&nn,&m)!=EOF)
    {
        chu(); 
        for(i=0;i<m;i++)
        {
            scanf("%d%d%d",&u,&v,&len); 
            add(u,v+nn,1,len);
        }
        build(nn);
        n=2*nn+2;
        mcmf(nn*2+1,nn*2+2);
        if(maxflow < nn)
        {
            printf("-1\n");
        }    
        else
        {
            printf("%d\n",mincost);
        }
    } 
    return 0; 
} 
int main()
{
    int i,f;
    char zan,cas=0;
    while(scanf("%d%d",&n,&m),n+m)
    {
        getchar();
        cas++;
        chu();
        for(i=1;i<=n;i++)
        {
            ch[i]=" ";
            for(f=1;f<=m;f++)
            {
                scanf("%c",&zan);    
                if(zan < 'a')
                {
                    ch[i]+=chuli[zan-'0'];    
                }
                else
                {
                    ch[i]+=chuli[zan-'a'+10];        
                }
            }
            getchar();        
        }
        m*=4;
        solve();
        printf("Case %d: ",cas);
        print();
    }
    return 0;
}
int main()
{
    int i,l;
    while(scanf("%d%d%d",&n,&m,&q)!=EOF)
    {
        chu();
        for(i=0;i<m;i++)
        {
            scanf("%d%d%d",&que[i].u,&que[i].v,&que[i].len);
        }
        qsort(que,m,sizeof(que[0]),cmp);
        for(i=0;i<q;i++)
        {
            scanf("%d",&l);
            query[i].id=i;
            query[i].l=l;
        }
        qsort(query,q,sizeof(query[0]),cmp2);
        solve();
        for(i=0;i<q;i++)
        {
            printf("%d\n",ans[i]);
        }
    }
    return 0;
}
int main()
{
    int i,f,res,m,n;
    while(scanf("%d%d%d",&m,&n,&t)!=EOF)
    {
        chu(m,n);
        getchar();
        for(i=1;i<=m;i++)
        {
            for(f=1;f<=n;f++)
            {
                scanf("%c",&map[i][f]);
                if('@'==map[i][f])
                {
                    si=i;
                    sf=f;
                    map[i][f]='.';
                }
            }
            getchar();
        }
        res=bfs();
        printf("%d\n",res);
    }
    return 0;
}
int main()
{
    int i,num,f,g;
    scanf("%d",&num);
    M=(1<<3)-1;
    for(i=0;i<num;i++)
    {
        scanf("%d",&n);
        chu();
        for(f=0;f<n;f++)
        {
            for(g=0;g<3;g++)
            {
                scanf("%d",&loc[f][g]);
            }
        }
        build();
        steiner();
        if(INF == dis[0][M])
        {
            printf("-1\n");
            continue;
        }
        printf("%d\n",n-(dis[0][M]+1));
    }
    return 0;
}