今天网易的笔试,妹的,算法题没能A掉,虽然按照思路写了出来,但是尼玛好歹给个测试用例的格式呀,吐槽一下网易的笔试出的太烂了。
就一道算法题,比较石子重量,个人以为解法应该是拓扑排序。
就去POJ找了道拓扑排序的题:POJ2367
直接上代码吧:
#include<stdio.h> #include<string> #define clr(x) memset(x,0,sizeof(x)) int g[101][102]; int indegree[102]; int res[102]; using namespace std; int main() { int n,p,top; while(scanf("%d",&n)!=EOF) { clr(g); clr(indegree); for(int i=1;i<=n;i++) { while(scanf("%d",&p),p) { g[i][p] = 1; indegree[p]++; } } top = 0; for(int i=1;i<=n;i++) { for(int j=1;j<=n;j++) { if(indegree[j] == 0) { res[top++] = j; indegree[j] = -1; for(int k=1;k<=n;k++) if(g[j][k]==1) indegree[k] -- ; break; } } } for(int i=0;i<top;i++) { printf("%d%c",res[i],i==top-1?' ':' '); } } return 0; }