int main() {
    ios::sync_with_stdio(0);
    double d;
    int m, tc = 1;
    while( cin >> d >> m) {
        cout << "Case " << tc++ << ":" << endl;
        memo.clear(); memo.resize(105, -1);
        prices.clear(); prices.resize(m + 1);
        prices[0].first = 1; prices[0].second = (d + eps) * 100;
        for(int i = 1; i <= m; i++) {
            int tmp; cin >> tmp >> d;
            prices[i].first = tmp; prices[i].second = (d + eps) * 100;
        }
        string str;
        cin.get();
        getline(cin, str);
        stringstream ss(str);
        int tmp;
        while(ss >> tmp) {
            cout << "Buy " << tmp << " for $" << fixed << setprecision(2) << (double)solve(tmp) / 100 << endl;
        }
    }

    return 0;
}
int main(){
	FASTER;
	int n;
	int Case=1;
	while(cin >> n, n){
		cas.clear();
		for(int i = 0 ; i < n ; i++){
			int a,m,g;
			cin >> a >> m >> g;
			castle c{a,m,g};
			C.push_back(c);
			cas.push_back(ii(max(a,m+g), m+g));
		}
		adj.assign(n,vi());
		for(int i = 0 ; i < n-1;i++){
			int u,v;cin >> u >> v;
			u--,v--;
			adj[u].push_back(v);
			adj[v].push_back(u);
		}	
		ii ans = ii(1e9,1e9);
		
		for(int i = 0 ; i < 1;i++){
			ans = min(ans,dfs(i));
		}
		cout << "Case " << (Case++)<< ": ";
		cout << ans.first << endl;
	}
}
int main(){
    FILE *f;
    f =fopen("input/OrderingTasks.in", "r");
    
    #ifdef ONLINE_JUDGE
    f = stdin;
    #endif
    
    int m,n;
    while(fscanf(f, "%d %d", &n, &m) == 2 && n){
        g.clear();
        g.assign(n, vi());
        for(int i = 0 ; i < m ; i++){
            int u,v;
            fscanf(f, "%d %d", &u,&v);
            g[u-1].push_back(v-1);
        }
        vi sortedV;
        for(int i = 0 ; i < n ; i++){
            if(!visited[i])
                dfs(i, sortedV);
        }
        memset(visited, 0, sizeof visited);
        for(int i = sortedV.size() -1 ; i >= 0 ; i--){
            printf("%d", sortedV[i] + 1);
            if(i)printf(" ");
            else printf("\n");
        }
    }
    
    return 0;
}
Exemple #4
0
bool ok(int l){

	int c1 = 0;
	int c2 = 0;

	for (int i = 1; i <= l; ++i) {
		if(a[i] < a[c1])c1 = i;
		if(b[i] < b[c2])c2 = i;
	}
	vector<pair<ll, ii> > p;
	for (int i = 0; i < m; ++i) {
		if(tp[i]==1) p.push_back(pair<ll, ii> (a[c1]*c[i], ii(i,c1)));
		if(tp[i]==2) p.push_back(pair<ll, ii> (b[c2]*c[i], ii(i,c2)));
	}
	sort(p.begin(), p.end());
	int sum = 0;
	int cnt = 0;
	X.clear();
	for (int i = 0; i < p.size(); ++i) {
		if(sum+p[i].first>s)break;
		sum+=p[i].first;
		X.push_back(p[i].second);
		cnt++;
	}
	return cnt >= k;
}
int main(){
	int t,m,u,v,w;
	scanf("%d",&t);
	while(t--){
		sum=1;
		edges.clear();
		scanf("%d%d",&n,&m);
		for(int i=1;i<=n;i++){
            pSet[i]=i;                      
        }
		for (int i = 0; i < m; ++i)
		{
			scanf("%d%d%d",&u,&v,&w);
			edges.push_back(make_pair(u, make_pair(v,w)));
		}
		sort(edges.begin(),edges.end(),compare);
		for (vector< pair<int,ii> >::iterator i = edges.begin(); i != edges.end(); ++i)
		{
			// printf("%d %d %d\n", i->first,i->second.first,i->second.second);							
			if(!isSameSet(i->first,i->second.first)){
				sum*=(i->second.second);
				if(sum>mod)
					sum=sum%mod;
				unionSet(i->first,i->second.first);
			}
		}			
		printf("%lld\n",sum%mod);
	}
	return 0;
}
int main()
{
	int test;
	scanf("%d", &test);
	for(int te=1;te<=test;te++)
	{
		grip.clear();
		data.clear();
		scanf("%d %d", &n, &m);
		for(int i=0;i<n;i++)
		{
			string x;
			cin>>x;
			grip.push_back(x);
		}
		getGraph();
		sol(piii(pii(data[0].first, data[0].second),0));
		int pos=-1;
		for(int i=0;i<4;i++)
			if(d[data[1].first][data[1].second][i] !=-1)
			{
				pos=i;
				break;
			}
		if(pos>=0)
			printf("Case #%d: %d\n", te,d[data[1].first][data[1].second][pos]);
		else
			printf("Case #%d: impossible\n", te);
	}
}
Exemple #7
0
int main(){
    int vertices,arestas,caso=1;
    while(scanf("%d %d", &vertices, &arestas) && vertices && arestas){
        for(int i = 0; i < arestas; i++)
        {
            int u,v;
            scanf("%d %d", &u, &v);
            adj[u].push_back(v);
            adj[v].push_back(u);
        }
        memset(dfs_num, -1 , sizeof(dfs_num));
        memset(visitados, 0 , sizeof(visitados));
        dfsNumbercounter = 0;

        for(int i = 0; i <= vertices; i++){
            if(dfs_num[i]==DFS_WHITE){findBridges(i);}
        }

        cout << caso++ << endl;
        cout << endl;

        for(int i = 0; i < bridge.size();i++){
            printf("%d %d\n",bridge[i].first,bridge[i].second);
        }
        cout << "#" << endl;
        bridge.clear();
        int i=vertices+5;
        while(i--){
            adj[i].clear();
        }
    }
    return 0;
}
void reset()
{
    id = 0;
    ans.clear();
    rep(i,n)
    {
        adj[i].clear();
        check[i] = false;
        low[i] = ind[i] = cnt[i] = 0;
        parent[i] = i;
    }
int main(){
	FASTER;

	int T;
	cin >> T;
	while(T--){
		cin >> N >> k;
		blue.clear();red.clear();
		for (int i = 0; i < N; ++i) {
			int x,y;
			string color;
			cin >> x >> y >> color;

			(color == "blue" ? blue : red).push_back(ii(x,y));
		}

		int lo = 0, hi = INF,mid, ans = -1;

		int kSq = k*k;
		while(lo < hi){
			int mid = (lo + hi) / 2;
			createEdges(mid);
			int fences = maxFlow();
			if(fences >= k){
				hi = mid;
				ans = mid;
			}else{
				lo = mid + 1;
			}
		}
		if(ans == -1)
			cout << "Impossible" << endl;
		else
			cout << (int)(sqrt(ans) + 1) << endl;
	}



	return 0;
}
Exemple #10
0
int main(){
    int t, n, i,j, x,y;
    scanf("%d", &t);
    while(t--){
        scanf("%d", &n);
        ps.clear();
        for(i=0; i<n; i++){ scanf("%d", &x); ps.push_back(ii(x,-1)); }
        for(i=0; i<n; i++){ scanf("%d", &x); ps[i].second=x; }

        sort(ps.begin(), ps.end());
        ys.clear();
        for(i=0; i<n; i++) ys.push_back(ps[i].second);
        printf("%d\n", LIS_Len(ys));
    }
    return 0;
}
Exemple #11
0
int main(){
    //maketestcase();
    //freopen("input.txt", "r", stdin);
    int n;
    while(scanf("%d", &n) != EOF){
        v.clear();
        for(int i = 0; i < n; i++){
            al[i].clear();
            visited[i] = false;
        }
        for(int i = 0; i < n; i++){
            int x, y;
            scanf("%d %d", &x, &y);
            v.pb(mkp(x,y));
        }

        map<ii, vi> m;
        for(int i = 0; i < n; i++){
            int x = v[i].first;
            int y = v[i].second;
            m[mkp(x/5, y/5)].pb(i);
        }
        int ix[5] = {0, 1, 1, 1, 0};
        int iy[5] = {1, 1, 0, -1, -1};
        repSTL(m, iter){
            generateGraph(iter->second,iter->second);
            ii p = iter->first;
            for(int i = 0; i < 5; i++){
                int x = p.first + ix[i];
                int y = p.second + iy[i];
                typeof(m.begin()) iter2 = m.find(mkp(x,y));
                if(iter2 != m.end()){
                    generateGraph(iter->second, iter2->second);
                }
            }
        }
        m.clear();

        int minS = 0;
        for(int i = 0; i < n; i++){
            if(!visited[i]){
                ii p = bipartite(i);
                minS += min(p.first, p.second);
            }
        }
        printf("%d\n", minS);
    }
 vii printPath(ii u, ii s) {
   path.clear();
   print(u, s);
   return path;
 }