Example #1
0
File: P762.cpp Project: LasseD/uva
/*
  Widest path problem / the bottleneck shortest path problem
 */
int main() {
  int M, s, t;
  string s1, s2;
  bool first = true;
  while(cin >> M) {
    if(!first)
      cout << endl;
    first = false;
    vector<int> *adjacencyLists = new vector<int>[2*M+2]; // At most 2M cities!
    map<string,int> m;
    map<int,string> rev;
    FORI(M) {
      cin >> s1 >> s2;
      if(m.find(s1) == m.end()) {
	m.insert(PSI(s1, (int)m.size()));
	rev.insert(PIS((int)rev.size(), s1));
      }
      if(m.find(s2) == m.end()) {
	m.insert(PSI(s2, (int)m.size()));
	rev.insert(PIS((int)rev.size(), s2));
      }
      s = m[s1];
      t = m[s2];
      adjacencyLists[s].push_back(t);
      adjacencyLists[t].push_back(s);
    }
    // query:
    cin >> s1 >> s2;
    if(m.find(s1) == m.end()) {
      m.insert(PSI(s1, (int)m.size()));
      rev.insert(PIS((int)rev.size(), s1));
    }
    if(m.find(s2) == m.end()) {
      m.insert(PSI(s2, (int)m.size()));
      rev.insert(PIS((int)rev.size(), s2));
    }
    s = m[s1];
    t = m[s2];
    
    // Find maximum flow path between S and D:
    stack<int> path;
    dijkstra((int)m.size(), adjacencyLists, s, t, path);
    delete[] adjacencyLists;

    // Compute result:
    if(path.empty())
      cout << "No route" << endl;
    else {
      while(!path.empty()) {
	cout << rev[path.top()] << " ";
	path.pop();
	cout << rev[path.top()] << endl;
	path.pop();
      }
    }
  }
} 
static void print_irq_status(u32 status)
{
	if ((status & dispc_compat.irq_error_mask) == 0)
		return;

#define PIS(x) (status & DISPC_IRQ_##x) ? (#x " ") : ""

	pr_debug("DISPC IRQ: 0x%x: %s%s%s%s%s%s%s%s%s\n",
		status,
		PIS(OCP_ERR),
		PIS(GFX_FIFO_UNDERFLOW),
		PIS(VID1_FIFO_UNDERFLOW),
		PIS(VID2_FIFO_UNDERFLOW),
		dss_feat_get_num_ovls() > 3 ? PIS(VID3_FIFO_UNDERFLOW) : "",
		PIS(SYNC_LOST),
		PIS(SYNC_LOST_DIGIT),
		dss_has_feature(FEAT_MGR_LCD2) ? PIS(SYNC_LOST2) : "",
		dss_has_feature(FEAT_MGR_LCD3) ? PIS(SYNC_LOST3) : "");
#undef PIS
}
static void dispc_dump_irqs(struct seq_file *s)
{
	unsigned long flags;
	struct dispc_irq_stats stats;

	spin_lock_irqsave(&dispc_compat.irq_stats_lock, flags);

	stats = dispc_compat.irq_stats;
	memset(&dispc_compat.irq_stats, 0, sizeof(dispc_compat.irq_stats));
	dispc_compat.irq_stats.last_reset = jiffies;

	spin_unlock_irqrestore(&dispc_compat.irq_stats_lock, flags);

	seq_printf(s, "period %u ms\n",
			jiffies_to_msecs(jiffies - stats.last_reset));

	seq_printf(s, "irqs %d\n", stats.irq_count);
#define PIS(x) \
	seq_printf(s, "%-20s %10d\n", #x, stats.irqs[ffs(DISPC_IRQ_##x)-1]);

	PIS(FRAMEDONE);
	PIS(VSYNC);
	PIS(EVSYNC_EVEN);
	PIS(EVSYNC_ODD);
	PIS(ACBIAS_COUNT_STAT);
	PIS(PROG_LINE_NUM);
	PIS(GFX_FIFO_UNDERFLOW);
	PIS(GFX_END_WIN);
	PIS(PAL_GAMMA_MASK);
	PIS(OCP_ERR);
	PIS(VID1_FIFO_UNDERFLOW);
	PIS(VID1_END_WIN);
	PIS(VID2_FIFO_UNDERFLOW);
	PIS(VID2_END_WIN);
	if (dss_feat_get_num_ovls() > 3) {
		PIS(VID3_FIFO_UNDERFLOW);
		PIS(VID3_END_WIN);
	}
	PIS(SYNC_LOST);
	PIS(SYNC_LOST_DIGIT);
	PIS(WAKEUP);
	if (dss_has_feature(FEAT_MGR_LCD2)) {
		PIS(FRAMEDONE2);
		PIS(VSYNC2);
		PIS(ACBIAS_COUNT_STAT2);
		PIS(SYNC_LOST2);
	}
	if (dss_has_feature(FEAT_MGR_LCD3)) {
		PIS(FRAMEDONE3);
		PIS(VSYNC3);
		PIS(ACBIAS_COUNT_STAT3);
		PIS(SYNC_LOST3);
	}
#undef PIS
}