Topic Link http://vjudge.net/problem/19449
Thinking of solving problems
Unlimited backpack ... To find the shortest circuit ...
Code
#include <stdio.h>#include<string.h>#defineMax_size 310#defineMax_num 1E9structPoint {intx, y;};intDp[max_size][max_size];BOOLVis[max_size][max_size];p oint ecoin[ -];intMain () {inttests; intm, S; scanf ("%d", &tests); while(tests--) {scanf ("%d%d", &m, &s); for(intI=0; i<m; i++) scanf ("%d%d", &ecoin[i].x, &ecoin[i].y); for(intI=0; i<max_size; i++) for(intj=0; j<max_size; J + +) Dp[i][j] =Max_num; memset (Vis,0,sizeof(VIS)); dp[0][0] =0; vis[0][0] =true; for(intI=0; i<=s; i++) for(intj=0; j<=s; J + +) for(intk=0; k<m; k++)if(i+ecoin[k].x <= s && j+ecoin[k].y <=s)if(Vis[i][j] && Dp[i][j] +1< dp[i+ecoin[k].x][j+Ecoin[k].y]) {Vis[i+ECOIN[K].X][J+ECOIN[K].Y] =true; Dp[i+ECOIN[K].X][J+ECOIN[K].Y] = Dp[i][j] +1; } intMINV =Max_num; for(intI=0; i<=s; i++) for(intj=0; j<=s; J + +)if(I * i + j * j = = S * S && dp[i][j] < MINV) MINV =Dp[i][j]; if(MINV = = max_num) printf ("Not possible\n"); Elseprintf"%d\n", MINV); } return 0;}
uva10306-Electronic Coins