Codeforces 781B. Innokenty and a Football League

题目链接:http://codeforces.com/contest/781/problem/B

 


 

去tmd 2-SAT

直接贪心就可以过去了,优先选择第二种情况。

然而....可以被叉掉(数据水了)

2
ABC DDD
ABD DOG
View Code

 


 1 #include<iostream>
 2 #include<cstdio>
 3 #include<algorithm>
 4 #include<vector>
 5 #include<cstdlib>
 6 #include<cmath>
 7 #include<cstring>
 8 #include<map>
 9 using namespace std;
10 #define maxn 1001000
11 #define llg long long 
12 #define yyj(a) freopen(a".in","r",stdin),freopen(a".out","w",stdout);
13 llg n,m;
14 string a,s1,s2,la,b;
15 string ans[maxn];
16 map<string,bool>ma,mma;
17 
18 
19 int main()
20 {
21     yyj("D");
22     cin>>n;
23     for (llg k=1;k<=n;k++)
24     {
25         s1.clear(),s2.clear();
26         cin>>s1>>s2;
27         a.clear();
28         a=s1.substr(0,3);
29         b=s1.substr(0,2)+s2[0];
30         if (!ma[b])
31         {
32             ma[b]=1;
33             ans[k]=b;
34             mma[a]=1;
35         }
36         else
37         {
38             if (ma[a] || mma[a]){cout<<"NO"; return 0;}
39             ans[k]=a;
40             ma[a]=1;
41         }
42         
43     }
44     cout<<"YES"<<endl;
45     for (llg i=1;i<=n;i++)
46     {
47         cout<<ans[i]<<endl;
48     }
49     return 0;
50 }

 

posted @ 2017-03-06 10:07  №〓→龙光←  阅读(467)  评论(3编辑  收藏  举报