這兩天在看揹包九講,抽空作了這個題,起初寫了一個程序,沒有檢測循環的狀況,即有些控制關係須要利用後來求出的控制關係得出。ios
ans[i][j]表示輸入數據,i控制j的份額。bns[i][j]表示循環計算後的結果,use[i][j]來表示在某次循環中是否已經使用過這個控制關係。spa
/* ID:jzzlee1 PROB:concom LANG:C++ */ //#include <iostream> #include<fstream> using namespace std; ifstream cin("concom.in"); ofstream cout("concom.out"); const int len=101; int ans[len][len],bns[len][len],use[len][len]; int main() { int a,i,j,q,k,n; cin>>n; for(a=1;a<=n;++a) { cin>>i>>j>>q; ans[i][j]=bns[i][j]=q; } bool flag=1; while(flag) { flag=0; for(i=1;i!=len;++i) { for(j=1;j!=len;++j) { if(j==i) continue; if(bns[i][j]>50&&!use[i][j]) { use[i][j]=1; for(k=1;k!=len;++k) { if(k==i&&k==j) continue; if(ans[j][k]) bns[i][k]+=ans[j][k]; flag=1; } } } } } for(i=1;i!=len;++i) for(j=1;j!=len;++j) if(i!=j&&bns[i][j]>50 ) cout<<i<<" "<<j<<endl; return 0; }