您的位置:首页 > 其它

Database UVA - 1592

2018-03-20 17:49 295 查看
点击打开链接#include<cstdio>
#include<iostream>
#include<string>
#include<cstring>
#include<algorithm>
#include<map>
#include<vector>
#define bug(x) printf("%d****\n",x)
using namespace std;

const int maxn=1e4+10;
vector<string> id_vec;
map<string,int> id_mp;

vector<int> tex[maxn];
struct node{
int a,b;
node(int x,int y):a(x),b(y){};
bool operator<(const node& t)const{
if(a==t.a) return b<t.b;
return a<t.a;
}
};
map<node,int> is_exist;
int ID(string s){//最六的操作,利用map记录和vector的存储,简直神操作
if(id_mp.count(s)) return id_mp[s];
id_vec.push_back(s);
return id_mp[s]=id_vec.size()-1;
}

void read(int n,int m){
string str;
char ch;
ch=getchar();//去掉第一行的一个回车符
for(int i=0;i<n;i++){
for(;;){
ch=getchar();
if(ch=='\n'||ch=='\r'){
if(!str.empty()) tex[i].push_back(ID(str));
str.clear();break;
}
if(ch!=',')
str+=ch;
else{
tex[i].push_back(ID(str));
str.clear();
}
}
}
}

void solve(int n,int m){
for(int c1=0;c1<m;c1++){
for(int c2=c1+1;c2<m;c2++){
is_exist.clear();
for(int i=0;i<n;i++){
int a=tex[i][c1],b=tex[i][c2];
node pr(a,b);
if(is_exist.count(pr)){
cout<<"NO"<<endl;
int r1=is_exist[pr]+1,r2=i+1;
cout<<r1<<" "<<
4000
;r2<<endl;
cout<<c1+1<<" "<<c2+1<<endl;
return;
}
else
is_exist[pr]=i;//就算是0,也没有关系
}
}
}
cout<<"YES"<<endl;
}

int main(){
int n,m;
while(cin>>n>>m){
read(n,m);
solve(n,m);
id_vec.clear();
id_mp.clear();
is_exist.clear();
for(int i=0;i<n;i++)
tex[i].clear();
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: