用户工具

站点工具


2020-2021:teams:namespace:牛客多校第三场

差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

两侧同时换到之前的修订记录 前一修订版
后一修订版
前一修订版
2020-2021:teams:namespace:牛客多校第三场 [2020/07/20 09:46]
great_designer [A]
2020-2021:teams:namespace:牛客多校第三场 [2020/07/23 21:28] (当前版本)
great_designer [A]
行 438: 行 438:
 </​hidden>​ </​hidden>​
  
-=====A=====+=====L===== 
 + 
 +C语言优秀练习题。
  
 <​hidden>​ <​hidden>​
 <code C> <code C>
  
-</code> +#include<stdio.h>
-</hidden>+
  
-=====A=====+char a[105];
  
-<​hidden>​ +int main() 
-<code C>+
 +    scanf("​%s",​a);​ 
 +    if((a[0]=='​l'​||a[0]=='​L'​)&&​(a[1]=='​o'​||a[1]=='​O'​)&&​(a[2]=='​v'​||a[2]=='​V'​)&&​(a[3]=='​e'​||a[3]=='​E'​)&&​(a[4]=='​l'​||a[4]=='​L'​)&&​(a[5]=='​y'​||a[5]=='​Y'​)) 
 +
 +        printf("​lovely\n"​);​ 
 +    } 
 +    else 
 +    { 
 +        printf("​ugly\n"​);​ 
 +    } 
 +    return 0; 
 +}
  
 </​code>​ </​code>​
 </​hidden>​ </​hidden>​
  
-=====A=====+=====G===== 
 + 
 +以下是补题。
  
 <​hidden>​ <​hidden>​
-<code C>+<code C++> 
 + 
 +#​include<​stdio.h>​ 
 +#​include<​stdlib.h>​ 
 +#​include<​vector>​ 
 + 
 +using namespace std;  
 + 
 +struct head 
 +
 + struct head *r; 
 + int val; 
 +}; 
 + 
 +int dsu[1000000];​ 
 + 
 +int get(int v) 
 +
 + if (v == dsu[v]) return v; 
 + else return dsu[v] = get(dsu[v]);​ 
 +
 + 
 +pair<​struct head*, struct head*> g[1000000];​ 
 + 
 +pair<​struct head *, struct head *> merge(pair <struct head *, struct head *> a, pair <struct head *, struct head *> b) 
 +
 + if (!a.second) return b; 
 + else 
 +
 + a.second->​r = b.first; 
 + return make_pair(a.first,​ b.second);​ 
 +
 +
 + 
 +pair <struct head*, struct head*> lst(int x) 
 +
 + struct head *t =(struct head*)malloc(sizeof(struct head)); 
 + t->​r=0;​ 
 + t->​val=x;​ 
 + return make_pair(t,​t);​ 
 +
 + 
 +int main() 
 +
 + int t; 
 + scanf("​%d",&​t);​ 
 + while(t--) 
 +
 + int n,m; 
 + scanf("​%d%d",&​n,&​m);​ 
 + int i; 
 + for(i = 0; i < n; i++) 
 +
 + dsu[i] = i; 
 + g[i] =make_pair((struct head*)0,​(struct head*)0); 
 +
 + for(i = 0; i < m; i++) 
 +
 + int x, y; 
 + scanf("​%d%d",&​x,&​y);​ 
 + g[x] = merge(g[x], lst(y)); 
 + g[y] = merge(g[y], lst(x)); 
 +
 + int q; 
 + scanf("​%d",&​q);​ 
 + for(i = 0; i < q; i++) 
 +
 + int c; 
 + scanf("​%d",&​c);​  
 + if (get(c) != c) 
 +
 + continue;​ 
 +
 + else 
 +
 + vector<​int>​ ord; 
 + struct head *s; 
 + for(s = g[c].first; s != 0; s = s->r) 
 +
 + int z = s->​val;​ 
 + if (get(z) != c) 
 +
 + int who = get(z); 
 + dsu[who] = c; 
 + ord.push_back(who);​ 
 +
 +
 + g[c] =make_pair((struct head*)0,​(struct head*)0); 
 + vector<​int>::​iterator p; 
 + for(p=ord.begin();​p!=ord.end();​p++) 
 +
 + g[c] = merge(g[c],​g[(*p)]);​ 
 +
 +
 +
 + for(i = 0; i < n; i++) 
 +
 + printf("​%d ",​get(i));​ 
 +
 + printf("​\n"​);​ 
 +
 +}
  
 </​code>​ </​code>​
 </​hidden>​ </​hidden>​
 +
 +
  
  
2020-2021/teams/namespace/牛客多校第三场.1595209581.txt.gz · 最后更改: 2020/07/20 09:46 由 great_designer