View Code of Problem 14

#include<iostream>
#include<algorithm>
using namespace std;
struct dd{
	int bg;
	int end;
	int Long;
	int repert;
}l[2000];
bool compare(dd a, dd b){
	if (a.bg == b.bg && a.end == b.end)return a.Long < b.Long;
	return a.bg < b.bg;
}
int main() {
	int n, t,court=1;
	
	while (cin >> n >> t) {
		if (t == 0 && n == 0)break;
		for (int i = 0; i < t; i++)
		{
			int a, b, value;
			cin >> a>>b>> value;
			l[i].bg = a;
			l[i].end = b;
			l[i].Long = value;
			l[i].repert = 0;
		}
		sort(l, l + t, compare);
		for (int i = 0; i < t; i++)
		{
			if (i!=(t - 1)&&l[i].bg == l[i + 1].bg && l[i].end == l[i + 1].end) {
				for (int j = i+1; j < t; j++)
				{
					l[j] = l[j + 1];
				}
				//数组长度减一
				t--;
				//重新判断
				i--;
			}
		}
		int w, e, sum=0;
		cin >> w >> e;
		for (int i = 0; i < w; i++)
		{
			int c,d;
			cin >> c >> d;
			for (int i = 0; i < t; i++)
			{
				if (c == l[i].bg && d == l[i].end&& l[i].repert!=1) {
					sum += l[i].Long;
					l[i].repert = 1;
				}
				if (d == l[i].bg && c == l[i].end && l[i].repert != 1) {
					sum += l[i].Long;
					l[i].repert = 1;
				}
			}
			if (d == e)break;
		}
		cout << "Case #" << court << ":" << sum << endl;
		court++;
	}
	
}

Double click to view unformatted code.


Back to problem 14