#include #include #include #include #include #include #include #include #include int max(int a,int b){ if(a>=b)return a; else return b; } void swap(int *a,int *b){ int tmp = *a; *a = *b; *b = tmp; } void babbleSort(int *data,int n){ for(int i=0;ii;j--){ if(data[j]>=data[j-1]){ swap(&data[j],&data[j-1]); } } } } using namespace std; /* cin.ignore(); getline(cin,dataStr); data = new int[n]; stringToInteger(&dataStr,data,n); */ void stringToInteger(string *str,int *data,int n){ for(int i=0;ifind(' ',0); data[i] = atoi(str->substr(0,spaceN).c_str()); str->erase(0,spaceN+1); } } int dp[51][51][301];//data[i][j][k] i:iから jに向かう時の k総コスト int cost[51][51];//始点から終点にいくためのコスト int main(){ int n,c,v; int *flag; cin>>n; cin>>c; cin>>v; flag=new int[51]; for(int i=0;i<51;i++){ flag[i]=0; } int *s,*t,*y,*m; s = new int[v]; t = new int[v]; y = new int[v]; m = new int[v]; string str; cin.ignore(); getline(cin,str); stringToInteger(&str,s,v); getline(cin,str); stringToInteger(&str,t,v); getline(cin,str); stringToInteger(&str,y,v); getline(cin,str); stringToInteger(&str,m,v); vector *data; data = new vector[n+1]; for(int i=0;i<51;i++){ for(int j=0;j<51;j++){ for(int k=0;k<301;k++){ dp[i][j][k]=-1; } } } for(int i=0;i=m[i]){ dp[s[i]][t[i]][y[i]]=m[i]; } if(dp[t[i]][s[i]][y[i]]>=m[i]){ dp[t[i]][s[i]][y[i]]=m[i]; } if(cost[s[i]][t[i]]>=y[i]){ cost[s[i]][t[i]]=y[i]; } } for(int i=1;i<=n;i++){ data[i].push_back(1); } queue q; for(int i=0;i