博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
2019牛客暑期多校训练营(第五场)H subsequence 2(拓扑排序)
阅读量:5050 次
发布时间:2019-06-12

本文共 2102 字,大约阅读时间需要 7 分钟。

题目链接:

题目大意:

  给定n,m,表示原字符串长度为n,以及m*(m-1)/2个数据,每个数据第一行是两个小写字母和原字符串中包含这两个字母的总长度,第二行是按原字符串两个字母的顺序输出,让你求原字符串n,无则输出-1。

解题报告:

  对题目给的字符进行编号,以及编号过的字符则无需再编,对相邻的两个字符建边,最后按拓扑序输出。

AC代码:

1 #include
2 #include
3 #include
4 #include
5 #include
6 #include
7 #include
8 #include
9 #include
10 #include
11 #include
12 #define numm ch-48 13 #define pd putchar(' ') 14 #define pn putchar('\n') 15 #define pb push_back 16 #define fi first 17 #define se second 18 #define fre1 freopen("1.txt","r",stdin) 19 #define fre2 freopen("2.txt","w",stdout) 20 using namespace std; 21 template
22 void read(T &res) { 23 bool flag=false;char ch; 24 while(!isdigit(ch=getchar())) (ch=='-')&&(flag=true); 25 for(res=numm;isdigit(ch=getchar());res=(res<<1)+(res<<3)+numm); 26 flag&&(res=-res); 27 } 28 template
29 void write(T x) { 30 if(x<0) putchar('-'),x=-x; 31 if(x>9) write(x/10); 32 putchar(x%10+'0'); 33 } 34 const int maxn=1e5+7; 35 const int N=60; 36 const int inf=0x3f3f3f3f; 37 const int INF=0x7fffffff; 38 const int mod=998244353; 39 typedef long long ll; 40 struct wtz { 41 int v,net; 42 }wtz[maxn<<1]; 43 vector
mp[30]; 44 int num[maxn]; 45 char s1[10],s2[maxn]; 46 int t[30],sum,in[maxn],head[maxn]; 47 void add(int u,int v) { 48 wtz[++sum].v=v; 49 wtz[sum].net=head[u]; 50 head[u]=sum; 51 } 52 int main() 53 { 54 int _,m,n; 55 read(n),read(m); 56 memset(head,-1,sizeof(head)); 57 int cnt=0; 58 for(int z=1;z<=m*(m-1)/2;z++) { 59 60 int len1,len2,lst=-1; 61 scanf(" %s",s1); 62 cin>>len2; 63 if(!len2) continue; 64 memset(t,0,sizeof(t)); 65 scanf("%s",s2); 66 for(int i=0;i
n) 77 return write(-1),pn,0; 78 } 79 if(cnt
que; ///拓扑排序 82 vector
ans; 83 for(int i=1;i<=n;i++) 84 if(!in[i]) que.push(i); 85 86 while(!que.empty()) { 87 int k=que.front(); 88 que.pop(); 89 ans.pb(k); 90 for(int i=head[k]; ~i ; i=wtz[i].net ) { 91 --in[wtz[i].v]; 92 if(!in[wtz[i].v]) 93 que.push(wtz[i].v); 94 } 95 } 96 97 if(ans.size()!=n) return write(-1),pn,0; 98 for(int i=0;i
代码在这里!

 

转载于:https://www.cnblogs.com/wuliking/p/11296652.html

你可能感兴趣的文章
requirejs amd module load example
查看>>
PhoneGap + Dreamweaver 5.5 无法在模拟器中打开的问题
查看>>
实验13
查看>>
[置顶] mmsplayer V2 for IOS 完成. V2 所有汇总
查看>>
(转) JS原生对象、内置对象、宿主对象的区别
查看>>
递归插入排序
查看>>
链表-Reverse Linked List II
查看>>
牛客带你学编程-Java测试卷
查看>>
hdoj1051
查看>>
poj2318
查看>>
07-图4 哈利·波特的考试
查看>>
iOS学习之iOS程序名称及内容国际化(本地化)
查看>>
生产案例、Linux出现假死,怎么回事?
查看>>
树结构(三)---- 多路查找树
查看>>
07深入理解C指针之---指针类型和长度
查看>>
06深入理解C指针之---指针操作和比较
查看>>
SQL Server发送邮件的存储过程
查看>>
【20160924】GOCVHelper 图像处理部分(3)
查看>>
HashMap底层原理
查看>>
js/jQuery实现类似百度搜索功能
查看>>