首页 > 代码库 > HDU 5961 传递
HDU 5961 传递
题目链接:HDU-5961
用vector存直接暴力dfs也可AC。正解如下(看了icpc-camp的题解,感觉写的很好,直接引用了。原链接:2016 合肥解题报告):
代码(暴力)如下:
1 #include"cstdio" 2 #include"iostream" 3 #include"cstring" 4 #include"algorithm" 5 #include"cstdlib" 6 #include"vector" 7 using namespace std; 8 typedef long long LL; 9 const int MAXN=3000; 10 11 char s[MAXN][MAXN]; 12 vector<int> nextP[MAXN],nextQ[MAXN]; 13 int main() 14 { 15 #ifdef LOCAL 16 freopen("in.txt","r",stdin); 17 //freopen("out.txt","w",stdout); 18 #endif 19 int t; 20 scanf("%d",&t); 21 for(int tt=1;tt<=t;tt++) 22 { 23 int n; 24 scanf("%d",&n); 25 for(int i=1;i<=n;i++) 26 { 27 nextP[i].clear(); 28 nextQ[i].clear(); 29 } 30 for(int i=1;i<=n;i++) 31 { 32 if(getchar()==‘\r‘) getchar(); 33 for(int j=1;j<=n;j++) 34 { 35 s[i][j]=getchar(); 36 if(s[i][j]==‘P‘) 37 nextP[i].push_back(j); 38 else if(s[i][j]==‘Q‘) 39 nextQ[i].push_back(j); 40 } 41 } 42 bool ok=true; 43 for(int i=1;i<=n;i++) 44 { 45 for(unsigned int j=0;ok && j<nextP[i].size();j++) 46 { 47 int u=nextP[i][j]; 48 for(unsigned int k=0;ok && k<nextP[u].size();k++) 49 { 50 int v=nextP[u][k]; 51 if(s[i][v]!=‘P‘) 52 ok=false; 53 } 54 } 55 } 56 for(int i=1;i<=n;i++) 57 { 58 for(unsigned int j=0;ok && j<nextQ[i].size();j++) 59 { 60 int u=nextQ[i][j]; 61 for(unsigned int k=0;ok && k<nextQ[u].size();k++) 62 { 63 int v=nextQ[u][k]; 64 if(s[i][v]!=‘Q‘) 65 ok=false; 66 } 67 } 68 } 69 if(ok) printf("T\n"); 70 else printf("N\n"); 71 } 72 return 0; 73 }
HDU 5961 传递
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。