• Coloring Edges(有向图环染色)-- Educational Codeforces Round 72 (Rated for Div. 2)


    题意:https://codeforc.es/contest/1217/problem/D

    给你一个有向图,要求一个循环里不能有相同颜色的边,问你最小要几种颜色染色,怎么染色?

    思路:

    如果没有环,那全是1;如果有环,那小到大的边为1,大到小的边为2。

      1 #define IOS ios_base::sync_with_stdio(0); cin.tie(0);
      2 #include <cstdio>//sprintf islower isupper
      3 #include <cstdlib>//malloc  exit strcat itoa system("cls")
      4 #include <iostream>//pair
      5 #include <fstream>//freopen("C:\Users\13606\Desktop\草稿.txt","r",stdin);
      6 #include <bitset>
      7 //#include <G>
      8 //#include<unordered_map>
      9 #include <vector>
     10 #include <stack>
     11 #include <set>
     12 #include <string.h>//strstr substr
     13 #include <string>
     14 #include <time.h>//srand(((unsigned)time(NULL))); Seed n=rand()%10 - 0~9;
     15 #include <cmath>
     16 #include <deque>
     17 #include <queue>//priority_queue<int, vector<int>, greater<int> > q;//less
     18 #include <vector>//emplace_back
     19 //#include <math.h>
     20 //#include <windows.h>//reverse(a,a+len);// ~ ! ~ ! floor
     21 #include <algorithm>//sort + unique : sz=unique(b+1,b+n+1)-(b+1);+nth_element(first, nth, last, compare)
     22 using namespace std;//next_permutation(a+1,a+1+n);//prev_permutation
     23 #define fo(a,b,c) for(register int a=b;a<=c;++a)
     24 #define fr(a,b,c) for(register int a=b;a>=c;--a)
     25 #define mem(a,b) memset(a,b,sizeof(a))
     26 #define pr printf
     27 #define sc scanf
     28 #define ls rt<<1
     29 #define rs rt<<1|1
     30 typedef long long ll;
     31 void swapp(int &a,int &b);
     32 double fabss(double a);
     33 int maxx(int a,int b);
     34 int minn(int a,int b);
     35 int Del_bit_1(int n);
     36 int lowbit(int n);
     37 int abss(int a);
     38 //const long long INF=(1LL<<60);
     39 const double E=2.718281828;
     40 const double PI=acos(-1.0);
     41 const int inf=(1<<30);
     42 const double ESP=1e-9;
     43 const int mod=(int)1e9+7;
     44 const int N=(int)1e6+10;
     45 
     46 int in[N];
     47 vector<vector<int> > G(N);
     48 
     49 bool top_sort(int n)
     50 {
     51     int cont=0;
     52     queue<int> q;
     53     for(int i=1;i<=n;i++)
     54         if(in[i]==0)
     55             q.push(i);
     56     while(!q.empty())
     57     {
     58         int x=q.front();
     59         q.pop();
     60         cont++;
     61         for(int i=0;i<G[x].size();i++)
     62         {
     63             in[G[x][i]]--;
     64             if(in[G[x][i]]==0)
     65                 q.push(G[x][i]);
     66         }
     67     }
     68     return (cont==n);
     69 }
     70 struct node
     71 {
     72     int u,v;
     73 }edge[N];
     74 
     75 int main()
     76 {
     77     int n,m;
     78     sc("%d%d",&n,&m);
     79     for(int i=1;i<=m;++i)
     80     {
     81         int u,v;
     82         sc("%d%d",&u,&v);
     83         edge[i]={u,v};
     84         in[v]++;
     85         G[u].push_back(v);
     86     }
     87     if(top_sort(n))
     88     {
     89         pr("1
    ");
     90         for(int i=1;i<=m;++i)
     91             pr("1 ");
     92     }
     93     else
     94     {
     95         pr("2
    ");
     96         for(int i=1;i<=m;++i)
     97             pr("%d ",edge[i].u>edge[i].v?1:2);
     98     }
     99     return 0;
    100 }
    101 
    102 /**************************************************************************************/
    103 
    104 int maxx(int a,int b)
    105 {
    106     return a>b?a:b;
    107 }
    108 
    109 void swapp(int &a,int &b)
    110 {
    111     a^=b^=a^=b;
    112 }
    113 
    114 int lowbit(int n)
    115 {
    116     return n&(-n);
    117 }
    118 
    119 int Del_bit_1(int n)
    120 {
    121     return n&(n-1);
    122 }
    123 
    124 int abss(int a)
    125 {
    126     return a>0?a:-a;
    127 }
    128 
    129 double fabss(double a)
    130 {
    131     return a>0?a:-a;
    132 }
    133 
    134 int minn(int a,int b)
    135 {
    136     return a<b?a:b;
    137 }
  • 相关阅读:
    心跳机制
    C++虚继承和虚基类
    STL,ATL与WTL
    C# Task的暂停与终止
    C#继承
    C#线程同步问题
    CourtAi发布配置文件修改说明
    阿里云虚拟主机https化步骤第一篇,申请证书(笔记)
    linux 服务器重启指令
    .net core 发布到iis问题 HTTP Error 500.30
  • 原文地址:https://www.cnblogs.com/--HPY-7m/p/11479292.html
Copyright © 2020-2023  润新知