1 条题解
-
0chrB LV 8 MOD @ 2017-11-03 18:39:54
标程,我知道标程很丑但是我不想改
#include<iostream> #include<stdio.h> #include<stdlib.h> #include<string.h> #include<math.h> #include<algorithm> #include<queue> using namespace std; int n,m,a[100010],b[100010],c[100010],x[100010],f[100010]; priority_queue<int> p;//个人极其讨厌队列叫p不叫q。 int main() { int i,j,k; scanf("%d%d",&n,&m); for(i=1;i<=m;i++)//链式前向星 { scanf("%d%d",&j,&k); b[i]=k; c[i]=a[j]; a[j]=i; x[k]++;//x数组储存入度 } for(i=1;i<=n;i++) if(!x[i]) p.push(n-i);//-i就可以了标程就是要加个n for(i=1;i<=n;i++) { if(p.empty()) break; f[i]=n-p.top(); p.pop(); for(j=a[f[i]];j>0;j=c[j]) if(!--x[b[j]]) p.push(n-b[j]); } if(i<=n) { printf("-1\n"); return 0; } for(i=1;i<=n;i++) printf("%d ",f[i]); printf("\n"); return 0; }
- 1
信息
- 难度
- 6
- 分类
- (无)
- 标签
- (无)
- 递交数
- 32
- 已通过
- 9
- 通过率
- 28%
- 上传者