UVA 12118(p181)----Inspector's Dilemma

来源:互联网 发布:淘宝网客户端官方下载 编辑:程序博客网 时间:2024/06/06 09:40
#include<iostream>#include<cstdio>#include<vector>#include<cstring>using namespace std;const int maxn=1000+50;int num,v[maxn],n,e,t;vector<int> g[maxn];void dfs(int u){    if(!v[u]) return ;    v[u]=0;    num+=g[u].size()&1;    for(int i=0;i<g[u].size();i++)    {        if(v[g[u][i]])            dfs(g[u][i]);    }}int main(){   // freopen("in.in","r",stdin);    int cas=1;    while(scanf("%d%d%d",&n,&e,&t)!=EOF&&n)    {        for(int i=0;i<=n;i++) g[i].clear();        memset(v,1,sizeof(v));        for(int i=0;i<e;i++)        {            int x,y;            scanf("%d%d",&x,&y);            g[x].push_back(y);            g[y].push_back(x);        }        int temp=0;        for(int i=1;i<=n;i++)            if(v[i]&&!g[i].empty())               {                   num=0;                   dfs(i);                   temp+=max(2,num);                   //cout<<num<<endl;               }     // cout<<temp<<endl;      int ans=t*(max(temp/2-1,0)+e);      printf("Case %d: %d\n",cas++,ans);    }    return 0;}

0 0
原创粉丝点击