20分,六重循环看不懂
- #include<bits/stdc++.h>
- using namespace std;
- int NK[6][10];
- int line[6][6][10][10];
- int main()
- {
- int N,M,K;
- cin>>N>>M>>K;
- for(int i=0;i<N;i++)
- {
- for(int j=0;j<K;j++)
- {
- cin>>NK[i][j];
- }
- }
- for(int k=0;k<M;k++)
- {
- int N1,N2;
- cin>>N1>>N2;
- for(int i=0;i<K;i++)
- {
- for(int j=0;j<K;j++)
- {
- cin>>line[N1][N2][i][j];
- }
- }
- }
- int NKCur[6]= {-1,-1,-1,-1,-1,-1};
- int Mincost=0x3f3f3f3f;
- for(int N5=0;N5<K;N5++)
- {
- for(int N4=0;N4<K;N4++)
- {
- for(int N3=0;N3<K;N3++)
- {
- for(int N2=0;N2<K;N2++)
- {
- for(int N1=0;N1<K;N1++)
- {
- for(int N0=0;N0<K;N0++)
- {
- NKCur[0]=N0;
- NKCur[1]=N1;
- NKCur[2]=N2;
- NKCur[3]=N3;
- NKCur[4]=N4;
- NKCur[5]=N5;
- int NCost=0;
- for(int i=0;i<N;i++)
- {
- NCost+=NK[i][NKCur[i]];
- }
- int cost=0;
- for(int i=0;i<N;i++)
- {
- for(int j=0;j<N;j++)
- {
- cost+=line[i][j][NKCur[i]][NKCur[j]];
- }
- }
- cost+=NCost;
- Mincost=min(Mincost,cost);
- // if(Mincost==-1)
- // Mincost=cost;
- // if(cost<Mincost)
- // Mincost=cost;
- }
- }
- }
- }
- }
- }
- cout<<Mincost<<endl;
- }