拓扑排序裸题qwq
注意:入度为一的点删掉之后,它的入度要更新为-1
这个题刷出了我人生中第一次PE 可还行qaq
我搜索PE是输出格式与标准输出不符, 结果发现语言选成G++ orz
想起来《%你抄》 “原来CE,只因选错语言” 可我PE,也是选错语言啊啊啊啊啊QAQ
代码君qwq
1 #include2 #include 3 #include 4 using namespace std; 5 const int sz = sz; 6 int n, m; 7 int plat[sz][sz], in[sz], ans[sz]; 8 int main() { 9 while(~scanf("%d%d", &n, &m)) {10 memset(plat, 0, sizeof(plat));11 memset(in, 0, sizeof(in)); 12 int cnt = 0, flag = 0, x, y;13 for(int i = 1; i <= m; i++) {14 scanf("%d%d", &x, &y);15 if(!plat[x][y]) {16 plat[x][y] = 1;17 in[y]++;18 }19 }20 while(cnt < n) {21 for(int i = 1; i <= n; i++) {22 if(in[i]==0) {23 in[i] = -1;24 ans[++cnt] = i;25 flag = i;26 break;27 }28 }29 for(int i = 1; i <= n; i++) {30 if(plat[flag][i]) in[i]--;31 }32 }33 for(int i = 1; i < n; i++) 34 printf("%d ", ans[i]);35 printf("%d\n", ans[n]);36 }37 return 0;38 }
这是我写的邻接表存图的拓扑排序,自认为没有错误但交上去就ce
原因如下:(我很懵逼qaq
HDU你是魔鬼吗???
1 #include2 #include 3 #include 4 using namespace std; 5 const int sz = 505; 6 struct edge { 7 int nxt, to; 8 }e[sz<<1]; 9 priority_queue