zoukankan      html  css  js  c++  java
  • URAL 1040 Airline Company

            原来URAL中tricky problem都是这么得微妙……

            直接将原图遍历,然后按遍历的时间将边标号即可,对于任意一个点,如果有至少两条边和其相连,那么至少有两条边的访问顺序是连续的,那么由于相邻的两个数的最大公约数是1,于是这样遍历一定能够得到解。

    #include<stdio.h>
    #include<string.h>
    #define MAXD 60
    #define MAXM 2510
    int N, M, e, first[MAXD], next[MAXM], v[MAXM], flag[MAXM], cnt;
    void add(int x, int y)
    {
        v[e] = y, flag[e] = 0;
        next[e] = first[x], first[x] = e ++;
    }
    void init()
    {
        int i, x, y;
        e = 0;
        memset(first, -1, sizeof(first));
        for(i = 0; i < M; i ++)
        {
            scanf("%d%d", &x, &y);
            add(x, y), add(y, x);    
        }
    }
    void dfs(int cur)
    {
        int i;
        for(i = first[cur]; i != -1; i = next[i])
            if(!flag[i])
            {
                flag[i] = flag[i ^ 1] = ++ cnt;
                dfs(v[i]);    
            }    
    }
    void solve()
    {
        int i, j, k;
        cnt = 0;
        for(i = 1; i <= N; i ++)
            dfs(i);
        printf("YES\n");
        printf("%d", flag[0]);
        for(i = 1; i < M; i ++)
            printf(" %d", flag[i << 1]);
        printf("\n");    
    }
    int main()
    {
        while(scanf("%d%d", &N, &M) == 2)
        {
            init();
            solve();    
        }
        return 0;    
    }
  • 相关阅读:
    android AndroidManifest.xml package名
    java 空字条串空判断 效率
    ant
    android post 提交数据
    BI 商务智能软件 数据分析
    swfupdate flash上传工具
    log4j 使用方法
    java vc vb 项目结构
    时间单位
    iphone命令行编译xcodebuild
  • 原文地址:https://www.cnblogs.com/staginner/p/2482686.html
Copyright © 2011-2022 走看看